尝试从模块

时间:2018-01-26 10:39:39

标签: node.js express socket.io

我有两个模块,主模块server.jssocket.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中未定义。

感谢任何帮助。

1 个答案:

答案 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;