express4ans插座.在模块中访问app.io



我正在使用套接字。io和Express 4和我有问题传递io到其他模块。

在我的app.js中,我像这样将io附加到应用程序:

var express = require('express');
var socket_io = require('socket.io');
var app = express();
app.io = socket_io();
module.exports = app;

我的服务器定义在。/bin/www不在app.js中,io像这样连接到服务器:

/bin/www:

var app = require('../app');
var http = require('http');
server.listen(3000);
app.io.attach(server);

在我的模块中,我试图导入app访问app.io,但我可能有一个循环依赖问题,因为app是一个空对象。

module.js

var app = require('../app');
console.log(app)
--> {}

我已经尝试了这个和这个问题中建议的解决方案,但它们不起作用。我怀疑我在。/bin/www中创建服务器可能是原因。

我能做些什么来访问app在其他模块?

你可以试试这个答案:使用套接字。Express 4和Express -generator's/bin/www

app.js

// Socket.io
var io = socket_io();
app.io = io;
var routes = require('./routes/index')(io);

index.js

module.exports = function(io) {
    var app = require('express');
    var router = app.Router();
    io.on('connection', function(socket) { 
        (...) 
    });
    return router;
}

也尽量不要从模块

中要求app.js

最新更新