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