繁体   English   中英

将socket.io与Express 4生成器一起使用

[英]Using socket.io with express 4 generator

节点新手,所以我很抱歉。 我正在使用我的应用程序,我想使用socket.io发送该位置。 我发现了1000个示例,但所有示例均指的是express没有路由,而所有示例均在app.js中。 所有示例均涉及聊天应用程序。 我能够运行一个示例,将搜索到的几个问题拼凑在一起,但是,我不明白如何获取最终在app.js上使用的io与我的index.js进行交互,因此可以多次使用它参数。 express.io已过时,我找不到任何最新信息。 在bin / www上

/**
 * Socket.io
 */
var io = app.io
io.attach( server );

我的app.js

var socket_io = require('socket.io');

var app = express();

var io = socket_io();
app.io = io;

所以我可以使用:

io.on('connection', function (socket) {
    console.log('IO Ready');
});

我不知道如何在我的index.js(路由)上使用套接字,我无法对其进行模块化。

提前致谢。

我不得不说,我认为默认生成的项目对socket.io设置不利。 节点http.Server var始终位于bin/www ,而不位于app.js

因此,第一件事是将所有相关的内容从bin/www移至app.js 主要你只需要

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

就像在socket.io文档中一样

现在在app.js使用io ,我们可以在需要路由时使用它。 我忘记了如何精确设置默认路由,但是我认为它们设置了一个app并只是将其导出。 相反,您可以设置类似

module.exports = function(app, io) {
    io.on('connection', function(socket) {
        console.log('connected!');
    }

    app.get('/foo', function() {
        ...
    }
}

现在,当您需要路由时,无需使用默认路由

var index = require('./routes/index');
app.use(index);

或类似的东西,你可以做

require('./routes/index')(app, io);

这就是你如何让io到您的路线。 或至少我该怎么做。

暂无
暂无

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

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