使用带有快速4生成器

时间:2015-06-24 01:59:04

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

节点新手,所以我道歉。 我正在处理我的应用程序,我想使用socket.io发送位置。我找到了1000个例子,但是所有引用都表示没有路由,而且一切都在app.js.所有示例均指聊天应用程序。 我能够运行一个示例,将我搜索过的几个问题拼凑在一起但是,我不明白如何获得io,我最终在我的app.js上工作以与我的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(路由)上使用套接字,我无法将其模块化。

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

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