繁体   English   中英

Express 4 ans Socket.io-在模块中访问app.io

[英]Express 4 ans Socket.io - Access app.io in modules

我正在使用socket.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)
--> {}

我已经tryed在建议的解决方案这个这个问题,但他们没有工作。 我怀疑我可能是在./bin/www中创建服务器的事实。

如何访问其他模块中的app

您可以尝试以下答案: 在Express 4和express-generator的/ bin / www中使用socket.io

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM