节点新手,所以我道歉。 我正在处理我的应用程序,我想使用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(路由)上使用套接字,我无法将其模块化。
提前致谢。
答案 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
进入你的路线。或者至少我是怎么做的。