我想让我的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;
在我的情况下,我不需要将它分配给任何变量,并希望它在运行中执行。可能的?
答案 0 :(得分:0)
require()
返回模块导出的内容。它可以是Object
,function
,也可以是String
或Number
。它通常是Object
或function
。例如,var server = require('http')
会返回Object
,其中包含Server()
方法(您可以在代码示例的第一行调用)。真的,这取决于包的作者。
您的代码对我来说似乎没问题。 socket.io
被分配给变量,因为这是您稍后引用它的方式。 io.on('connection', ...)
实际上只被调用一次。这将等待连接,每次发生连接事件时,都会调用function(client) {...}
。此实现没有重大性能问题。