Skip to content
This repository has been archived by the owner on Nov 20, 2019. It is now read-only.

偶发,sdk与服务器连接正常,但是收取不到微信消息,出现问题时,ws ping响应异常 #98

Open
hawkwithwind opened this issue Mar 12, 2019 · 0 comments

Comments

@hawkwithwind
Copy link

我这边监测到不定期发生,客户端与服务器连接是活的,但是已经收取不到微信消息。
当发生这种问题时,我重启客户端重做一次自动重连,通常可以解决。

为了定位这个问题,我在客户端代码中加入了对服务器调用websocket的ping,并预期在5分钟内收到ws pong。如果超时就会报警。

  wx .on('open', async () => {
      let ret
      logger.info('连接成功!')
      connected = true

      wx.ws.isAlive = true
      if (wx.ws.pingLoop) {
        logger.info('再次启动,首先清除ping loop')
        try {
          clearInterval(wx.ws.pingLoop)
        } catch (err) {
          logger.error(err)
        }
      }
      
      wx.ws.pingLoop = setInterval(() => {
        if(wx.ws.isAlive === false) {
          //send zabbix alert
          zbx_sender.addItem(`${config.zabbix.host}`, `${config.zabbix.key}`, 0).send((err, res) => {
      	    if (err) { throw err }
      	  })
      	  return
        }

        wx.ws.isAlive = false
        wx.ws.ping(() => {})
      }, 5 * 60 * 1000)
      
      wx.ws.on('pong', () => {
      	wx.ws.isAlive = true
      	//send zabbix ok
      	zbx_sender.addItem(`${config.zabbix.host}`, `${config.zabbix.key}`, 1).send((err, res) => {
      	  if (err) { throw err }
          //logger.info('zbx %o', res)
      	})
      })

      wx.ws.on('close', () => {
      	wx.ws.isAlive = false
      	//send zabbix alert
      	zbx_sender.addItem(`${config.zabbix.host}`, `${config.zabbix.key}`, 0).send((err, res) => {
      	  if (err) { throw err }
      	})
      	clearInterval(wx.ws.pingLoop)
      })

在2019-03-12 17:00 前后,我观察到客户端与服务器连接不稳定,每5个ping中有一个超时。
当这个问题发生时,我看到,客户端已经收取不到微信消息了。我重启客户端,重新进行断线重连后,问题解决。

这个issue看看能否帮助咱们优化服务稳定性哈。

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant