我们在web应用程序中使用tomcat websocket实现。消息通过网络套接字从服务器推送到客户端。当间歇性连接断开或网络切换但Web应用程序仍处于连接状态时,不会推送Web套接字消息。
举个例子,我连接到了局域网并登录了应用程序,现在我通过wifi连接,在wifi成功连接后,我断开了与一小部分第二网络的局域网连接,从局域网切换到了wifi,但在此之后,消息不会通过网络套接字从服务器推送到客户端。
在网络切换之后,如果我检查websocket的状态(readyState),它说1,这意味着websocket连接是打开的,但实际上不是。
有人能早点面对这个问题并提供你的建议吗。
感谢
您必须创建一个连接断开检测机制。WebSocket协议具有乒乓帧,但我不知道Tomcat是否具有该功能。在一些Webscoket框架中,你可以定义一个超时间隔,如果客户端错过了一些连接,服务器会定期ping客户端。
如果Tomcat没有提供该功能,您仍然可以创建自己的功能。只需定义一种特殊类型的消息,然后从客户端将其重复到服务器即可。如果您有一段时间没有收到这些消息,请断开连接。