使用Express> 4.0版本的Socket.io和Node.js
我已经阅读了关于这个问题的其他一些post,但似乎没有得到正确的答案。
socket.io“开始”演练已经过时,并告诉做app.js文件中的东西。 因为Express 4.一切都是在www文件中处理的。
到目前为止这么好 – 不应该是一个大问题。
我使用以下命令在正确的项目文件夹中npm install --save socket.io
之后,我去了bin / www文件,并添加了以下代码:
... /** * Create HTTP server. */ var server = http.createServer(app); /** * Socket IO */ var io = require('socket.io')(server); /** * Listen on provided port, on all network interfaces. */ server.listen(port); server.on('error', onError); server.on('listening', onListening); ...
现在我已经在www文件中需要socket.io了,我将把下面的代码添加到app.js. 由于app.js不再处理的东西,我假设也必须进入www文件:
io.on('connection', function(socket){ console.log('a user connected'); });
可悲的是,我不知道如何访问www文件夹以外的variablesio。
我创build了一个应该显示所有在线用户dynamic的后端路由。 我怎样才能在这条路上访问io?
你可以把你的下面的代码从www文件放到一个单独的socketjs文件中。
代码到你的socketjs文件将会是这样的: –
module.exports = function (io) { io.sockets.on('connection', function(socket) { //.. } }
通过这种方式,你可以在你的www文件中导入这个socketjs文件,如下所示:
var app = express(), server = require('http').createServer(app), socket = require('./socket'); var io = require('socket.io').listen(server); socket(io)
希望这可以帮助你。
如果由于某种原因需要访问路由器中的variablesio
,可以使用app.set
:
斌/ WWW:
var io = require('socket.io')(server); app.set('io',io);
路线/ backend.js:
router.get('/', function(req,res,next) { console.log( req.app.get('io') ); });
- socket.io net :: ERR_CONNECTION_TIMED_OUT错误
- 初学Node.JS net.createServer的例子
- 使用UDP套接字的JavaScript应用程序 – NodeJS和SocketIO
- Node.js – Socket.io – “最大并发连接数”问题
- callback函数socket.io + node.js
- 节点代理networking套接字如何检查
- 将多个消息发送到Node.js tcp套接字时,它们将作为单个消息进行stream式传输
- 在nodejs中,我该如何检查一个端口正在侦听还是正在使用
- 节点js从tcp socket net.createServer读取特定的消息