关于android机WebSocket 断线重连影响性能问题
发布于 7 年前 作者 lihao 20120 次浏览 来自 问答

设备:红米4A

系统版本:Android 6.0.1

代码如下:

   wx.connectSocket({
     url: address
   })
   wx.onSocketOpen(function (res) {
     console.log('WebSocket连接已打开!')
   })
   wx.onSocketError(function (res) {
     console.error('WebSocket连接打开失败,请检查!')
   })
   wx.onSocketMessage(function (res) {
     console.log('收到服务器内容:' + res.data)
   })
   wx.onSocketClose(function (res) {
     console.error('WebSocket 已关闭!')

setTimeout(function () {

        console.log('正在重新链接...')

        wx.connectSocket({

          url: address

        })

     }, 1.5 * 1000);

   })

当手机网络完全断开后,WebSocket 会不断重连,导致手机CPU, 内存使用率爆表,直到程序崩溃。

2 回复
wx.onSocketClose(function (res) {
     console.error('WebSocket 已关闭!')

setTimeout(function () {

        console.log('正在重新链接...')

        wx.connectSocket({

          url: address

        })

     }, 1.5 * 1000);

   })

这里看到关闭的地方,又去调连接了,死循环了。重新连接加上限制次数之类应该就不会有问题了。

重连次数有限制一下,监视连接断开,记录重连次数,大于20次就不再重连

回到顶部