将消息从服​​务器发送到客户端socket.io

时间:2016-08-28 01:28:45

标签: javascript node.js sockets socket.io server

我正在尝试使用socket.io

从NodeJS服务器向客户端发送消息

但是,我在整个互联网上找到了相同的做法,即用io.on('连接',处理程序)包装发射,然后让服务器听一个特殊的"频道& #34;这样的事件:

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 个答案:

答案 0 :(得分: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。