微信小程序建立websocket连接踩坑记录

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收到的消息了
}

上一篇:当天数据


下一篇:websocket 使用