socket.io从客户端广播

时间:2016-04-01 09:22:20

标签: node.js socket.io broadcast

我刚开始使用socket.io,我想要一些功能,它会通过服务器向所有客户端广播一些客户端。

例如,我将有游戏,当我需要处理很多事情时。

有两种选择: 1。 服务器和客户端的每个调用句柄,每次调用都创建socket.on('call');

但我认为有更好的解决方案 2。 在客户端调用时,当我获得有效负载和将从服务器调用到其他客户端的套接字名称时发出。

像这样: 服务器

// Broadcast specific emit to all clisnts expect sender
socket.on('broadcast', function(data){
    socket.broadcast.emit(data.emitName, {id: socket.id, payload: data.payload});
});

和客户:

// Call to server
socket.emit('broadcast', {emitName: 'playerMove', payload: {....}});

// Handle called from server
socket.on('playerMove', function(data){
   ....
});

第二种解决方案可以节省大量时间,但这是安全的解决方案吗? 有没有更好的解决方案如何从客户端通过服务器广播呼叫并呼叫其他客户端?

1 个答案:

答案 0 :(得分:2)

只有服务器可以向所有客户端广播。服务器保留控制权。 您的第二个解决方案是最佳解决方案。

您可能希望以某种方式确保您信任正在产生将导致广播的发射的客户端。 HTTP协议在客户端身份验证方面已经建立。

Websockets没有相同的标准方法。也许您应该调查Websocket客户端身份验证。没有理由不能对websockets使用JWT身份验证,只需在客户端发送的数据包中发送JWT令牌。这可能是我处理身份验证的方式,但我不知道如何使用websockets执行此操作。