手机h5页面,建立的长连接,设置的心跳是55s。可是我每20s,我就主动去连接,这样就保证了心跳包一直在维持这个链接。现在有个问题就是,在手机上没有任何操作,手机自动锁屏了,等个四五分钟后,在打开手机,就收不到信息了,也监测不到断开连接了。我怎么能知道我的链接是断了的状态呢,或者能知道是异常状态也行
是因为定时器被清空了吗?
如果是因为定时器被清空了,那么你需要用 visibilitychange
+ document.hidden
来判断一下当前页面的显示状态。如果处于显示状态去发送心跳包。
如果定时器还在,那么其实你应该会在20s发送心跳包时检测出异常。
至于你说的 websocket 连接状态这个东西,它本身就是有的。最好提供一下复现页面吧,或者你试一下我之前这个 demo 会出现这个问题嘛https://www.lilnong.top/static/html/websocket.html
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
兼容性够的话,h5用visibilitychange,该事件监听页面显示状态