使用npm启动了一个项目,该项目创建了一个特定的文件结构:
www< - require()调用app.js;实例化服务器
app.js< - instantiates var app = express();并有module.exports = app;
现在,我想使用sockets.io。在我的'www'文件中,这是一段代码片段:
var app = require('../app');
...
var server = http.createServer(app);
我想将所有服务器端套接字侦听器放在app.js中,但代码如下:
var io = require('socket.io').listen(server);
需要服务器作为输入。如何在'app.js'中访问'www'中实例化的服务器?
答案 0 :(得分:1)
看起来有点奇怪。但是如果你坚持这样的结构,你可以从www
导出一个具有app
属性的对象作为它的属性,并且一个方法将套接字监听器绑定为接收app
对象作为参数。
module.exports = {
app: app,
bindSocketListeners: function(server, io) {
io.listen(server);
return io;
}
};
并称之为:
var appObj = require('../app');
var io = require('socket.io');
var app = appObj.app;
var server = http.createServer(app);
io = appObj.bindSocketListeners(server, io)