Node.js:require()和传递变量

时间:2015-11-26 04:51:10

标签: javascript node.js sockets

使用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'中实例化的服务器?

1 个答案:

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