【问题标题】:socket.io broadcast from clientsocket.io 从客户端广播
【发布时间】:2016-07-21 00:54:14
【问题描述】:

我刚开始使用 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){
   ....
});

第二个解决方案可以节省很多时间,但它是安全的解决方案吗? 有没有更好的解决方案如何从客户端广播通过服务器调用并调用其他客户端?

【问题讨论】:

    标签: node.js socket.io broadcast


    【解决方案1】:

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

    您可能希望以某种方式确保您信任发出将导致广播的客户端。 HTTP 协议在客户端身份验证方面非常成熟。

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

    【讨论】:

    • 感谢您的回复,所以当我使用一些身份验证来检查套接字 IDS 时,这个解决方案是否安全?
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2018-06-26
    • 2018-01-09
    • 2012-02-22
    • 1970-01-01
    相关资源
    最近更新 更多