我正在开发一个Java WebSocket客户端应用程序,并且必须确保客户端接收到服务器发送的每个消息。由于WebSocket基于TCP协议,因此一旦连接中断,是否可能会丢失某些消息(一旦它们从服务器发送)?这种情况不应该发生,因为WebSocket基于TCP协议。
我正在开发一个Java WebSocket客户端应用程序,并且必须确保客户端接收到服务器发送的每个消息。由于WebSocket基于TCP协议,因此一旦连接中断,是否可能会丢失某些消息(一旦它们从服务器发送)?这种情况不应该发生,因为WebSocket基于TCP协议。
这是可能发生的。TCP保证数据包的顺序,但在底层网络出现不可恢复的问题时,即使从服务器发送了所有数据包,也不能保证所有数据包都会到达客户端。想象一下,当您的应用程序与服务器通信时,在最糟糕的时机有人拔掉了LAN电缆或关闭了WiFi接入点,TCP也无法克服这样的麻烦。
为确保从服务器发送的每个WebSocket消息都能到达客户端,您必须在应用程序层实现某种形式的SYN / ACK。