Had*_*dik 5 broadcast node.js socket.io
我只是从socket.io开始,我想要一些功能,该功能将从一个客户端通过服务器向所有客户端广播某种想法。
例如,当我需要处理很多事情时,我会玩游戏。
有两个选项:1.服务器和客户端的每个调用句柄,为每个调用创建socket.on('call');
但是我认为有更好的解决方案2。当我获得有效负载和套接字名称时,将在客户端调用中发出,它将从服务器调用到其他客户端。
像这样:SERVER
// Broadcast specific emit to all clisnts expect sender
socket.on('broadcast', function(data){
socket.broadcast.emit(data.emitName, {id: socket.id, payload: data.payload});
});
Run Code Online (Sandbox Code Playgroud)
和客户:
// Call to server
socket.emit('broadcast', {emitName: 'playerMove', payload: {....}});
// Handle called from server
socket.on('playerMove', function(data){
....
});
Run Code Online (Sandbox Code Playgroud)
第二种解决方案可以节省很多时间,但这是安全的解决方案吗?还有更好的解决方案,如何从客户端广播通过服务器进行呼叫并打给其他客户端?
只有服务器可以向所有客户端广播。服务器保留控制权。你的第二个解决方案是最好的解决方案。
您可能希望以某种方式确保您信任发出将导致广播的客户端。HTTP 协议在客户端身份验证方面已经很完善。
Websockets 没有相同的标准方法。也许您应该研究 Websocket 客户端身份验证。没有理由不能将 JWT 身份验证与 Websocket 一起使用,只需在客户端发送的数据包中发送 JWT 令牌即可。这可能是我处理身份验证的方式,但我不是如何使用 Websocket 执行此操作的专家。