1、最小化小程序,ws会断开。
解决方案:初始化ws连接写在App.js的onShow方法里,onHide里断开ws连接,并把socketTask初始化为空。
2、给socketTask赋值需要在ws onOpen里。
3、重复进入同一页面,onMessage会多次执行的问题。
// App.js
sockTask: null,
onShow() {
this.initWs()
},
onHide() {
this.sockTask && this.sockTask.close()
this.sockTask = null
},
initWs() {
let that = this
let ws = wx.connectSocket({url: '这里是ws地址'})
ws.onOpen(() => {
// 给socketTask赋值需要在ws onOpen里
that.sockTask = ws
that.onMessage(e => {
// 解决重复进入同一页面,onMessage会多次执行的问题
let pages = getCurrentPages()
let currentPage = pages[pages.length - 1] // 当前页面
if (currentPage.onMessage) currentPage.onMessage(e)
})
})
}
// page.js
onMessage(e) {
// 这里就能拿到ws收到的消息了
}