
另一个技术细节,因为当我看到有人发问时,WebSocket可能会进入半死状态. 这实际上是原始世界的某些有缺陷的设计. 上面提到的WebSocket是正确的. 长连接解决了服务器和客户端双方的问题websocket记住连接状态,但是陷阱在于,除了服务器和客户端之外websocket记住连接状态,网络应用程序的另一个巨大存在是中间网络链接. HTTP / WebSocket连接通常会经过无数的路由和防火墙. 您认为您的数据是通过“连接”发送的,实际上,它经过无数次转发,过滤和最终到达终点之后,必须跨越数千座山川. 在此过程中,中间节点的处理方法可能会使您感到意外.

例如,这些坑爹的中间节点可能认为连接在一段时间内未能发送数据,这等同于失败. 在这种情况下,服务器和客户端都不会收到任何提示. 他们只是一厢情愿地认为它们之间的红线仍然存在,并且徒劳地发送了无法到达另一端的消息. 在计算机网络协议栈的实现中,将存在缓冲区层. 除非这些缓冲区已满,否则您的程序将根本找不到任何错误. 这样,良好的长WebSocket连接可能会进入半死状态而不知道它.

解决方案,WebSocket的设计者已经对此进行了深思. 这是为了使服务器和客户端能够发送Ping / Pong帧(RFC 6455-WebSocket协议). 这种帧是一种特殊的数据包. 它仅包含一些元数据,不需要实际数据有效载荷. 它可以维持中间网络的连接状态,而不会影响应用程序.
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-241713-1.html
优秀人才
好可惜哦