【问题标题】:Using socket.io with express 4 generator将 socket.io 与 express 4 生成器一起使用
【发布时间】:2015-06-24 01:59:04
【问题描述】:

新节点,所以我很抱歉。 我正在开发我的应用程序,我想使用 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(路由)上的套接字,我无法对其进行模块化。

提前致谢。

【问题讨论】:

    标签: javascript node.js sockets socket.io express-generator


    【解决方案1】:

    我不得不说,我认为默认生成的项目不适合 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 docs 中一样。

    现在有了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 进入你的路线。或者至少我是怎么做的。

    【讨论】:

      猜你喜欢
      • 2015-11-02
      • 1970-01-01
      • 2018-06-02
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-24
      • 2017-08-23
      相关资源
      最近更新 更多