前端设置了定时器每隔45秒就会向wss服务器发送一次数据,wss服务器也会响应但是过了几个小时以后还是会掉线,服务端是这样配置的
首先要明确的是谁也不能保证连接永远不断,典型的比如浏览器最小化后js暂停或运行延迟,电脑休眠,手机切换到后台,路由节点清理不活跃连接,服务器重启等各种原因都会导致连接断开。最重要的是前端要有断开重连的机制,最重要的是前端要有断开重连的机制,最重要的是前端要有断开重连的机制,没有这个机制的应用肯定会有问题。
你后端设置的45秒没收到心跳就断开,所以你前端得在45秒内发送心跳,最好是30-40秒就发送,避免因为网络延迟导致心跳到达服务端时间间隔超过45秒。
看你的截图里心跳日志打印的最后2次心跳时间间隔为1637387219-1637387159=60秒,已经超出了服务端设置的45秒范围,所以连接被服务端断开正常的。你需要检查客户端为什么没有在45秒内发出心跳。
我用360浏览器和Chrome同时测的 发现360浏览器不会掉线,但是Chrome会掉线我觉得可能是确实像你说的Chrome最小化后会阻止JS运行,这个我也只是测试一下,后面也会完善的,感谢!感谢!
首先要明确的是谁也不能保证连接永远不断,典型的比如浏览器最小化后js暂停或运行延迟,电脑休眠,手机切换到后台,路由节点清理不活跃连接,服务器重启等各种原因都会导致连接断开。最重要的是前端要有断开重连的机制,最重要的是前端要有断开重连的机制,最重要的是前端要有断开重连的机制,没有这个机制的应用肯定会有问题。
你后端设置的45秒没收到心跳就断开,所以你前端得在45秒内发送心跳,最好是30-40秒就发送,避免因为网络延迟导致心跳到达服务端时间间隔超过45秒。
看你的截图里心跳日志打印的最后2次心跳时间间隔为1637387219-1637387159=60秒,已经超出了服务端设置的45秒范围,所以连接被服务端断开正常的。你需要检查客户端为什么没有在45秒内发出心跳。
我用360浏览器和Chrome同时测的 发现360浏览器不会掉线,但是Chrome会掉线我觉得可能是确实像你说的Chrome最小化后会阻止JS运行,这个我也只是测试一下,后面也会完善的,感谢!感谢!