gpt4 book ai didi

node.js - 计算 WebSocket 连接的 Ping?

转载 作者:搜寻专家 更新时间:2023-10-31 22:30:46 26 4
gpt4 key购买 nike

小问题。如何计算 WebSocket 连接的 ping 值?服务器是使用 Node.js 和 node-websocket-server 设置的,如果这很重要的话。

最佳答案

方法不多。 Raynos 提供的一个 - 是错误的。因为客户端时间和服务器时间不同,不能比较。

发送时间戳的解决方案很好,但有一个问题。如果服务器逻辑根据 ping 进行一些决策和计算,然后发送时间戳,则存在客户端软件或 MITM 修改时间戳的风险,这样它将向服务器提供另一个结果。

更好的方法是将数据包发送到具有唯一 ID 的客户端,这不是增量数字,而是随机的。然后服务器将期待来自客户端的带有此 ID 的“PONG”消息。ID 的大小应该相同,我推荐 32 位(整数)。这样服务器发送具有唯一ID的“PING”并存储发送消息时的时间戳,然后等待直到它从客户端收到具有相同ID的响应“PONG”,并根据存储的时间戳和新的来计算往返延迟一个在收到 PONG 消息的那一刻。不要忘记实现超时情况,以防止丢失 PING/PONG 数据包停止检查延迟的过程。

WebSockets 也有一个叫做 PING 的特殊数据包操作码,但是上面的例子没有使用这个特性。阅读描述此特定操作码的官方文档,如果您在服务器端实现自己的 WebSockets 协议(protocol),它可能会有所帮助:https://www.rfc-editor.org/rfc/rfc6455#page-37

关于node.js - 计算 WebSocket 连接的 Ping?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5850412/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com