微信小程序建立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收到的消息了
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值