Javascript NodeJS、websocket和module.export
我有一个server.js文件 在里面,我定义了我的路线Javascript NodeJS、websocket和module.export,javascript,node.js,websocket,Javascript,Node.js,Websocket,我有一个server.js文件 在里面,我定义了我的路线 // routes var mainRoutes = require('./routes/main.js')(app, express); var apiRoutes = require('./routes/api.js')(app, express); var socketRoutes = require('./routes/socket.js'); app.use('/', mainRoutes); app.use('/a
// routes
var mainRoutes = require('./routes/main.js')(app, express);
var apiRoutes = require('./routes/api.js')(app, express);
var socketRoutes = require('./routes/socket.js');
app.use('/', mainRoutes);
app.use('/api', apiRoutes);
// socket.io communication
io.sockets.on('connection', socketRoutes);
我的socket.js文件如下所示:
module.exports = function (socket) {
console.log('user connected');
socket.on('myEvent', function(data) {
// whatever ...
});
}
在这个函数中,我可以捕获事件并发送一些。
但我需要在某个时候给每个人发个信息。比如说,当我收到“myEvent”事件时
所以基本上,我想做:
io.sockets.emit('messageForEveryone', "This is a test");
但在这里,我只能处理“socket”参数,我想这只适用于一个人
我想将io从server.js传递到socket.js
我试过(在server.js中):
(在socket.js中):
显然,它不起作用。我甚至不明白套接字参数是从哪里来的
问题:当我在sockets.js文件的module.export中时,如何处理io对象
我真的很感激任何帮助,我对这一切都是新手
谢谢 因为您只想向所有客户端发送,而不是将
io
传递给socketRoutes
,所以您可以简单地执行此操作
module.exports = function (socket) {
var sockets = this;
console.log('user connected');
socket.on('myEvent', function(data) {
sockets.emit('hello_all_clients',data);
});
}
您可以从导出返回函数
module.exports = function (io) { // pass io to initialize
return function (socket) {
// io and socket are both scoped
}
}
然后在server.js中
// socket.io communication
io.sockets.on('connection', socketRoutes(io));
谢谢你的回答,傻瓜,我接受了特雷斯丁的回答,因为我认为这更简单,但我也喜欢这个把戏!
module.exports = function (io) { // pass io to initialize
return function (socket) {
// io and socket are both scoped
}
}
// socket.io communication
io.sockets.on('connection', socketRoutes(io));