使用socket.io与快递4发电机(Using socket.io with express 4

2019-10-29 04:13发布

新的节点,所以我的道歉。 我的工作我的应用程序,我想用socket.io发送位置。 我发现1000个例,但都是指当快递没有的路线,而这一切是在app.js. 所有的例子参见聊天应用程序。 我能够运行一个例子拼凑几个问题我一起搜索,但我不明白如何获取我终于工作在我的app.js与我index.js互动IO这样我就可以多EMIT使用参数。 express.io已经过时了,我找不到任何电流。 在斌/ 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(路由),我不能模块化它。

提前致谢。

Answer 1:

我不得不说,我觉得默认生成的项目是坏的socket.io设置。 节点http.Server VAR是一路bin/www ,而不是在app.js

所以,第一件事就是从所有相关的东西移动bin/wwwapp.js 。 主要是你只需要

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

就像在socket.io文档 。

现在,随着ioapp.js ,我们可以使用所需的路由时。 我忘了究竟是如何的缺省路由设置,但我认为他们成立了一个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到您的路线。 或者至少,我怎么做吧。



文章来源: Using socket.io with express 4 generator