我想让我的 socket.io 连接模块化,使其运行一次,即使我随时随地需要它。如何导出?
var server = require("http").Server(express);
var io = require("socket.io")(server);
server.listen(5000);
io.on('connection', function(client) {
client.on('order_'+userId, function(data) {
io.emit('order_'+userId,data); // emit to cilent of dashboard
});
});
所需的工作原理是什么?我看到不同的模式,例如
var moment = require('moment');
或者某个时候
var LocalStorage = require('node-localstorage').LocalStorage;
就我而言,我不需要将其分配给任何变量,并希望它即时执行。可能吗?
最佳答案
require()
返回模块导出的内容。它可以是对象
、函数
,甚至可以是字符串
或数字
。但它通常是 Object
或 function
。例如,var server = require('http')
返回一个 Object
,它有一个 Server()
方法(您在代码示例的第一行)。这实际上取决于包的作者。
你的代码对我来说似乎没问题。 socket.io
被分配给一个变量,因为这是您稍后引用它的方式。 io.on('connection', ...)
实际上只被调用一次。这将等待连接,每次发生连接事件时,都会调用 function(client) {...}
。此实现不存在重大性能问题。
关于javascript - Express.js (node.js) 中的 require 和导出混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079424/