NodeJS,websocket和module.export

我有一个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('/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"); 

但在这里,我只能在'套接字'的论点上工作,只有一个人,我猜。

我想从server.js传递io到socket.js。

我试过(在server.js中):

 var socketRoutes = require('./routes/socket.js', io); 

那(在socket.js中):

 module.exports = function (io, socket) 

显然,这不起作用。 我什至不明白套接字参数来自哪里。

问题:当我在sockets.js文件的module.export中时,如何处理io对象?

我真的很感激任何帮助,我是新来的所有这一切。

谢谢 !

既然你只是要发射给所有的客户端,而不是传递iosocketRoutes ,你可以简单地做到这一点。

 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));