我也碰到了这个问题,求解答
地图显示问题wx.navigateTo跳转页面时,上个页面的地图会覆盖下个页面的地图
2018-08-25正常情况下,小程序切换到后台 WebSocket 应该不会关闭,但我们为了让程序稳定,需要手动关闭WebSocket 连接,下次进入小程序后,重新建立连接。 参考以下代码: [代码]// App.js App.js 用户小程序的运行时的生命周期,所以websocket 最好在App.js 中建立,保持连接,然后再其他页面用事件注册的方法来回调,仅供参考[代码] [代码]function[代码] [代码]createSocket() {[代码][代码] [代码][代码]return[代码] [代码]wx.connectSocket({[代码][代码] [代码][代码]url: socketURL[代码][代码] [代码][代码]});[代码][代码]}[代码] [代码]App({[代码][代码] [代码][代码]socketEvents: {},[代码][代码] [代码][代码]onShow: [代码][代码]function[代码] [代码](options) {[代码][代码] [代码][代码]var[代码] [代码]it = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]it.initSocket();[代码][代码] [代码][代码]},[代码][代码] [代码][代码]initSocket: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]var[代码] [代码]it = [代码][代码]this[代码][代码];[代码][代码] [代码][代码]it.socketTask = createSocket();[代码] [代码] [代码][代码]it.socketTask.onOpen([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]console.log([代码][代码]"链接成功"[代码][代码]);[代码][代码] [代码][代码]//维持心跳[代码][代码] [代码][代码]it.heartInter = setInterval([代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]it.socketTask.send({[代码][代码] [代码][代码]data: JSON.stringify({[代码][代码] [代码][代码]type: [代码][代码]"ping"[代码][代码] [代码][代码]})[代码][代码] [代码][代码]});[代码][代码] [代码][代码]}, 10000);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]//非正常关闭socket后,重连[代码][代码] [代码][代码]it.socketTask.onClose([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]if[代码] [代码](res.code === 1000) {[代码][代码] [代码][代码]return[代码][代码];[代码][代码] [代码][代码]}[代码][代码] [代码][代码]setTimeout([代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]it.initSocket();[代码][代码] [代码][代码]}, 5000);[代码][代码] [代码][代码]});[代码][代码] [代码][代码]// 注册消息回调事件[代码][代码] [代码][代码]it.socketTask.onMessage([代码][代码]function[代码] [代码](res) {[代码][代码] [代码][代码]var[代码] [代码]resObj = JSON.parse(res.data);[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]typeof[代码] [代码]it.socketEvents[resObj.event] === [代码][代码]'function'[代码][代码]) {[代码][代码] [代码][代码]it.socketEvents[resObj.event](resObj.data);[代码][代码] [代码][代码]}[代码][代码] [代码][代码]});[代码][代码] [代码][代码]},[代码][代码] [代码][代码]closeSocket: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]if[代码] [代码]([代码][代码]this[代码][代码].socketTask) {[代码][代码] [代码][代码]this[代码][代码].socketTask.close();[代码][代码] [代码][代码]}[代码][代码] [代码][代码]},[代码][代码] [代码][代码]onHide: [代码][代码]function[代码] [代码]() {[代码][代码] [代码][代码]this[代码][代码].closeSocket();[代码][代码] [代码][代码]}[代码][代码]})[代码] [代码]//相关页面[代码] [代码]var app=getApp();[代码] Page({ //在页面显示时 onShow:function(){ app.socketEvents = { "eventName":function(){console.log("我收到了一条消息");} } }, //在页面隐藏时 onHide:function(){ app.socketEvents={}; } }) [代码] [代码]
websocket怎么重新连接当小程序切换到后台websocket关闭连接,再次切换到前台的时候怎么让它重新连接,有大神可以说说嘛
2018-08-16