开放的websockets是否使用带宽或其他资源?

Chr*_*oba 10 networking server-side websocket

如果我在服务器和桌面客户端之间打开了websocket连接,那么除了我明确发送一些数据或带宽之外,两者之间是否没有使用或交换数据或带宽?如果这是真的,这是否意味着我一次只能在服务器上拥有数千个开放连接,只要数据只是很少被转移?

vto*_*ola 6

从技术上来说是的。尽管 WebSocket 协议具有 ping/pong 帧,并且两端中的任何一方都可以定期发送 ping 并期望 pong 作为答案,否则会终止连接。

不实现“保持活动”机制将是一个非常糟糕的主意,您将无法判断哪些连接实际已连接或未正确关闭。

http://blog.stephencleary.com/2009/05/detection-of-half-open-dropped.html

  • 不要忘记非带宽资源。在大多数系统上,即使没有数据包流量,开放的 TCP 连接(例如 WebSocket)也会消耗各种有限的资源。缓冲存储器和连接控制块是最常见的,但在某些系统中,端口号也是最常见的。 (4认同)
  • 那么在对传出带宽收费的云服务器上呢? (3认同)
  • 我们中的一些人认为保活是 TCP 上的一个大缺陷,使其在低带宽、低可靠性链路(例如,业余卫星通信)上变得不必要的脆弱。 (2认同)
  • Ping/pong 帧可以小至两个字节,并且在很少活动的情况下拥有数千个连接对于任何现代计算机来说都不是问题。我在我的笔记本电脑上作为服务器对数千个它们进行了性能测试。由于移动设备可能会在没有正确关闭连接的情况下失去连接​​,因此建议具有保持活动机制。 (2认同)