首页 文章

从服务器向客户端socket.io发送消息

提问于
浏览
0

我试图使用socket.io从NodeJS服务器向客户端发送消息

但是,我在互联网上找到了相同的做法,即用io.on('connection',handler)包装发射,然后让服务器监听特殊的“ Channels ”事件,如下所示:

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;

我的问题是:我想在连接包装器之外发出消息,例如我的路由或其他脚本 . 可能吗?

谢谢 .

1 回答

  • 1

    是 . 您只需要保留对套接字的引用 .

    // 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 .

相关问题