1.在app.js中连接websockt
这样可以始终保持只有一个websockt连接,不会提示错误
App({ onLaunch: function () { wx.connectSocket({ url: 'wss://wss.shanling.top' }) wx.onSocketClose(function (res) { wx.connectSocket({ url: 'wss://wss.shanling.top' }) }) } })
2.在每个页面的onShow中监听wx.onSocketMessage(不要在onLoad中)
这样可以保证当前页面对websocket的控制权,解决使用wx.navigateTo打开子页面时,父级页面websocket失效的问题
onShow: function () { var that=this; wx.onSocketOpen(function (res) { that.onopen() }) wx.onSocketMessage(function (res) { that.onmessage() }) }