[英]Send messages from server to client socket.io
我正在尝试使用socket.io将消息从NodeJS服务器发送到客户端
但是,我在整个互联网上都发现了相同的做法,即使用io.on('connection',handler)包装发射,然后使服务器侦听特殊的“ channel”事件,如下所示:
var io = require('socket.io')();
var socketioJwt = require('socketio-jwt');
var jwtSecret = require('./settings').jwtSecret;
var User = require('./models/users').User;
io.set('authorization', socketioJwt.authorize({
secret: jwtSecret,
handshake: true
}));
var sockets = [];
io.on('connection', function(socket) {
sockets.push(socket);
});
sendLiveUpdates = function(gameSession) {
console.log(sockets);
}
exports.sendLiveUpdates = sendLiveUpdates;
exports.io = io;
我的问题是:我想在连接包装器之外发出消息,例如从我的路线或其他脚本发出消息。 可能吗?
谢谢。
是。 您只需要保留对套接字的引用。
// Just an array for sockets... use whatever method you want to reference them
var sockets = [];
io.on('connection', function(socket) {
socket.on('event', function() {
io.emit('another_event', message);
});
// Add the new socket to the array, for messing with later
sockets.push(socket);
});
然后在代码中的其他地方...
sockets[0].emit('someEvent');
我通常要做的是为新客户端分配一个UUID,并将其添加到以此UUID为键的对象中。 这对于日志记录非常有用,而对于日志记录也不太方便,因此我到处都保持一致的ID。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.