我搜索了各种资源,并且所有人都说nodejs在需要调用时运行了一次模块但是我得到了不同的结果。
以下是名为socketio的模块中的一段代码。
var sio = require("socket.io");
var io = sio.listen(3001);
module.exports = io;
问题是,如果我执行下面的代码
var io = require(socketio);
io = require(socketio);
我收到错误listen EADDRINUSE :::3001
,但我认为代码不应该运行两次而且之前的io对象应该已经返回,但是没有用。
我需要套接字两次,因为我需要在两个不同的文件中为我的应用程序的两个不同功能进行socketio。
我还尝试了下面的代码,我尝试设计一个单独的,它也没有工作和相同的错误。
var sio = null;
var io = null;
module.exports = function () {
if(io == null) {
sio = require("socket.io");
io = sio.listen(3001);
}
return io;
};