了解socket.io ping间隔/超时设置

时间:2018-02-06 17:20:35

标签: javascript node.js sockets socket.io

根据SO accepted answer,ping超时必须大于ping间隔,但根据official socket.io docs中的示例,超时小于间隔。哪一个是正确的?此外,对于共享白板应用程序的设置而言,这可能是理想值,其中主持人在断开连接时不应该编辑画布(互联网掉线)。

1 个答案:

答案 0 :(得分:2)

根据socket.io文档:

  

在这些选项中:

     

pingTimeout(Number):没有pong数据包的多少ms考虑连接关闭(60000)

     

pingInterval(Number):发送新ping包之前的毫秒数(25000)。

     

在客户端知道服务器不再可用之前,这两个参数将影响延迟。例如,如果由于网络问题而未正确关闭底层TCP连接,则客户端可能必须等待pingTimeout + pingInterval ms才能获得断开连接事件。

这让我相信一个价值比另一个价值更大依赖。您可能希望设置更长的超时时间以允许慢速网络连接以接收响应。间隔时间将是从失败尝试再次尝试开始的时间,并且应该设置足够长的时间以允许重新连接,但不要持续连接。

对于理想值,这将是特定于应用程序的。我会考虑一些事情:

  • 您的申请必须具有多快的响应能力?
  • 您的申请需要多长时间才能回复网络请求?
    • 数据来回传递多大?
  • 您将拥有多少并发用户?

这些只是举几个例子,对于一个小的本地应用程序,你可能会很好,超时10000和5000的间隔,但这是一个绝对的猜测。您需要考虑前面提到的要点。