padchat-sdk
padchat-sdk copied to clipboard
偶发,sdk与服务器连接正常,但是收取不到微信消息,出现问题时,ws ping响应异常
我这边监测到不定期发生,客户端与服务器连接是活的,但是已经收取不到微信消息。 当发生这种问题时,我重启客户端重做一次自动重连,通常可以解决。
为了定位这个问题,我在客户端代码中加入了对服务器调用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看看能否帮助咱们优化服务稳定性哈。