我有两个模块,主模块server.js
和socket.js
。
在socket.js
我有一个公共空的var io
,我正在尝试分配socket.io并稍后使用它来处理套接字,
但是要初始化socket.io,我必须从server.js
模块执行,因为我必须使用expressjs。
这是我尝试做这项工作,我很确定我错过了一些小事:
server.js `
var socket = require('socket.js'); //the module
var app = express();
var server = require('http').createServer(app);
socket.io = require('socket.io')(server);`
socket.js
var io;
module.exports.io = io;
module.exports.handleSockets = somefunction();
handleSockets
稍后会在实际需要时调用,io
的{{1}}实际初始化并运行正常,但在server.js
中未定义。
感谢任何帮助。
答案 0 :(得分:2)
有几件事: 首先,你应该要求你的文件
var socket = require('./socket.js'); //the module
因为它是同一文件夹中的另一个文件。
io变量(在socket.js中)永远不会被初始化,所以它是不正常的。
我认为你应该在server.js中初始化它并将其传递给socket.js。像这样:
server.js
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
var socket = require('./socket.js')(io);
socket.js
function somefunction(io) { ... }
module.exports = somefunction;