app.js
initWebsocket() { var that = this this .checkVersion(); //建立连接 wx.connectSocket({ url: this .mag.wsHost }) //连接成功 wx.onSocketOpen( function () { console.log( 'ws连接成功' ); }) //连接失败 wx.onSocketError( function () { console.log( 'ws连接失败' ); }) wx.onSocketClose( function (res) { // 监听WebSocket关闭 wx.connectSocket({ url: that.mag.wsHost }) })
keepAlive() { setInterval( () => { var obj = { 'wsType': 'KEEPALIVE' } console.log("发送心跳包") wx.sendSocketMessage({ data: JSON.stringify(obj), }); } , 30000); }, |
上面的代码 初始化了websocket 并且第30秒会重连
现在有一个问题 比如我退出小程序后 超过30秒再进入小程序 websocket是断掉了的 请问有什么解决办法 因为app.js只会执行一次的
在线等
data: { //存储计时器 setInter: ''
onShow: function () { clearInterval(this.setInter) var that = this; this.initWebsocket(); this.keepAlive() }, initWebsocket() { var that = this wx.connectSocket({ url: this.mag.wsHost }) //连接成功 wx.onSocketOpen(function () { console.log('ws连接成功'); }) //连接失败 wx.onSocketError(function () { console.log('ws连接失败'); }) wx.onSocketClose(function (res) { console.log('xxxx') // 监听WebSocket关闭 wx.connectSocket({ url: that.mag.wsHost }) }) }, keepAlive() { this.setInter= setInterval( () => { var obj = { 'wsType': 'KEEPALIVE' } console.log("发送心跳包") wx.sendSocketMessage({ data: JSON.stringify(obj), }); } , 10000); } |
看这个写法有什么问题 试了一下还是不行的