pingtimeout and pingInterval in socket.io



如果我设置pingTimeout: 3000pingInterval: 2000;如果同时有800个套接字连接;这会对服务器性能有任何问题或提供延迟吗?当 socket.io 文档说服务器如果没有收到pong数据包(这意味着套接字空闲)时,服务器将等待pingTimeout(ms)断开套接字,这是什么意思。 当我们说套接字空闲时,涵盖哪些情况?这是否意味着如果用户在页面上处于活动状态但没有单击任何内容,那么这是否意味着套接字处于空闲状态?

socket.io 使用主动方案(而不是被动方案)来检测 socket.io 连接何时因任何原因断开连接或无法正常工作。

此活动方案涉及客户端定期向服务器发送ping数据包,并等待pong间隔从服务器返回。

从客户端来看,pingInterval是发送 ping 数据包的频率,pingTimeout是等待 ping 数据包从服务器返回多长时间,然后得出结论认为连接有问题,它应该断开连接,然后尝试重新连接。

同样,服务器期望每pingInterval到达一个ping数据包,如果没有到达,那么服务器将得出结论,该连接已以某种方式死亡。

因此,您设置pingInterval越短,客户端发送ping并从服务器接收pong的频率就越高,同样,服务器从客户端接收ping并发回pong的频率就越高。

"空闲"socket.io 连接仍在发送pingpong消息。

如果同时有 800 个套接字连接;这会对服务器性能产生任何问题或提供延迟吗

服务器可以同时处理多少个连接涉及很多变量,并且您并没有真正提供任何相关信息来了解您的特定情况。 以下是确定它的一些因素:

  1. 服务器打开网络的速度。
  2. 服务器的 CPU 速度。
  3. 正在发送多少其他 socket.io 消息。
  4. 通过 socket.io 连接发送的其他数据量。
  5. 要求节点.js服务器执行哪些操作。
  6. 操作系统配置(内存、允许的套接字总数等)。
  7. 服务器总内存和节点.js配置的内存。
  8. 每个连接执行乒乓球和乒乓球的频率。
  9. 客户端重新连接的频率(例如,当他们浏览网站时 - 每个页面加载都会丢弃前一个 socket.io 连接,并且必须建立一个新的连接)。

通常,800 个同时连接是一个相对较小的数字,如果总体数据使用量较低并且配置得到优化,则许多安装可以很好地处理这个问题。 有一些服务器安装可以处理数千个同时连接。

当我们说套接字空闲时,涵盖哪些情况?

我不确定你说的"什么情况"是什么意思。 空闲 socket.io 连接意味着没有消息在任一方向上流动。 当连接空闲时,socket.io 使用 ping 和 pong 数据包来"测试"连接以确保它仍在工作。

这是否意味着

如果用户在页面上处于活动状态但没有单击任何内容,那么这是否意味着套接字处于空闲状态?

当您的代码未在套接字上发送或接收任何内容时,套接字处于空闲状态。 这可能与用户点击的内容有关,也可能与用户点击的内容无关。 这完全取决于您的应用。 例如,股票行情应用程序可能每隔几秒钟接收一次超过 socket.io 的股票价格更新,即使最终用户从未点击过网页中的任何内容,该连接也几乎永远不会空闲。

相关内容

  • 没有找到相关文章

最新更新