关于网络波动掉线重连正常后再次send到服务器,会出现 WebSocket is already in CLOSING or CLOSED state 这个错误

九日

各位大佬你们好。我今天发现有些问题。不知道如何优雅的解决
今天用户反映出现这个错误
截图
上图的错误是因为网络掉线。然后重连。但仍然没有来网。导致出现这个错误
截图
当网来了以后,网站会重新链接。然后高频率的出现这个错误在控制台。(可正常发送消息),但是居然会影响到复制粘贴的功能(vue),我也不知道为什么会影响。正因为影响后我才发帖提问,还请各位大佬赐教。谢谢
只有当重新刷新才能够状态完好。但是用户肯定不知道。也许她不会刷新浏览器,会从网页退出,再登录。但仍然错误会有。
我的问题1:如何网络断开的时候,如果链接失败,可以不用再控制台展示
问题2:为什么在我断网连接成功后(可发送消息,没刷新浏览器)会高频率出现WebSocket is already in CLOSING or CLOSED state 这个错误
再次请求各位大佬们赐教,谢谢您

3034 2 0
2个回答

William A

你的代码有问题,浏览器提示是正常的,不提示才不正常。你的代码逻辑有问题,关闭之后还发送。贴代码

  • 九日 2020-11-18

    你好,我感觉我的代码是正常的,我已经贴在下面了。还请告诉我一下。谢谢您

  • William A 2020-11-18

    @7416:不要感觉,要是感觉正常就不会报错了。网络都断开了,你还发送,当然会报错,你定时都没判断一下有没有断网

  • William A 2020-11-18

    @7416:还是补充一下吧。定时器在 send 之前判断准备状态,你完全没有判断就直接发送了,报错难免。像你 close 那样写,再连不上网,然后呢?就彻底死掉了,close 可不会重复触发。另外,你这定时器只用一次又 clear,何必呢?

  • 九日 2020-11-18

    @7304:谢谢赐教。已经修正。 定时器一开始我是没有clear。 看人家源码。人家是这么写的,感觉应该稳定,不太相信自己。总感觉这么写稳定,已经取消clear了

九日

截图上图是网络掉线后,会自动重新链接gatewaywoker服务器
截图上图是连接后bind后触发一个定时器,这个定时器需要每隔50Sping一下,表示没掉线。但是在定时器里面还有其他方法
截图

年代过于久远,无法发表回答
🔝