Node.js Nodejs:访问express routes文件中的socket.io实例
我希望能够从express routes文件向连接到socket.io服务器的客户端发送数据 我的app.js如下所示:Node.js Nodejs:访问express routes文件中的socket.io实例,node.js,express,socket.io,Node.js,Express,Socket.io,我希望能够从express routes文件向连接到socket.io服务器的客户端发送数据 我的app.js如下所示: var express = require('express'); var app = express(); //routes require('./routes/test')(app); // starting http server var httpd = require('http').createServer(app).listen(8000, function(
var express = require('express');
var app = express();
//routes
require('./routes/test')(app);
// starting http server
var httpd = require('http').createServer(app).listen(8000, function(){
console.log('HTTP server listening on port 8000');
});
var io = require('socket.io').listen(httpd, { log: false });
io.on('connection', function(socket){
socket.join("test");
socket.on('message', function(data){
.....
});
});
module.exports = app;
我的test.js文件:
module.exports = function(app){
app.post('/test', function(req, res){
.....
//I would like here be able to send to all clients in room "test"
});
};
只需将io对象作为参数注入routes模块: app.js:
var express = require('express');
var app = express();
// starting http server
var httpd = require('http').createServer(app).listen(8000, function(){
console.log('HTTP server listening on port 8000');
});
var io = require('socket.io').listen(httpd, { log: false });
io.on('connection', function(socket){
socket.join("test");
socket.on('message', function(data){
.....
});
});
//routes
require('./routes/test')(app,io);
module.exports = app;
module.exports = function(app, io){
app.post('/test', function(req, res){
.....
//I would like here be able to send to all clients in room "test"
io.to('test').emit('some event');
});
};
test.js:
var express = require('express');
var app = express();
// starting http server
var httpd = require('http').createServer(app).listen(8000, function(){
console.log('HTTP server listening on port 8000');
});
var io = require('socket.io').listen(httpd, { log: false });
io.on('connection', function(socket){
socket.join("test");
socket.on('message', function(data){
.....
});
});
//routes
require('./routes/test')(app,io);
module.exports = app;
module.exports = function(app, io){
app.post('/test', function(req, res){
.....
//I would like here be able to send to all clients in room "test"
io.to('test').emit('some event');
});
};
我从没想过事情会这么简单。。所有相关的帖子都在谈论模块导出和其他复杂的事情。。你救了我!非常感谢。这非常有效,除了我需要先检查io是否有效'if(io){io.to…}'