将 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 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
进入路线的方式。或者至少我是怎么做的。
节点新手,所以我很抱歉。 我正在开发我的应用程序,我想使用 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 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
进入路线的方式。或者至少我是怎么做的。