将socket.io逻辑与服务器文件分离,并访问逻辑文件中的io.sockets

在我的Nodejs应用程序的server.js (起点)中,我执行以下操作来启动服务器和套接字:

 var socket = require('./routes/socket'); var port = process.env.PORT || 9091; var io = require('socket.io').listen(app.listen(port, function(){ console.log('Server is listening on port: ' + port); })); io.sockets.on('connection', socket); 

现在在./routes/socket我想能够广播给所有的客户,我相信我必须这样做: io.sockets.emit()与相同的io

问题是我没有访问该文件中的io

 // export function for listening to the socket var store = (function(){ var value = 0; var getValue = function() { return value; }; var addValue = function(toAdd) { value += toAdd.messages; return value; }; return { getValue: getValue, addValue: addValue }; }()); module.exports = function (socket, io) { socket.emit('value', { value: store.getValue() }); // broadcast a user's message to other users socket.on('getValue', function (data) { socket.emit('value', { value: store.getValue() }); }); socket.on('addValue', function (data) { store.addValue(data); io.sockets.emit('value', { value: store.getValue() }); }); }; 

任何想法 ?

在你的server.js文件末尾,应该是:

 io.sockets.on('connection', function (sock) { socket(sock, io); });