webSocketInit () { const vm = this let token = '' let socketUrl = 'wss://websocket.test' // 建立 WebSocket 连接 vm.socket = wx.connectSocket({ url: socketUrl, header: { 'content-type': 'application/json', 'authorization': 'Bearer' + token, 'x-wxapp-sockettype': 'ordertips' }, success (res) { console.log('WebSocket 连接成功: ', res) }, fail (err) { console.log('WebSocket 连接失败: ', err) } }) // onOpen vm.socket.onOpen((ret) => { console.log('打开 WebSocket 连接') }) // onMessage vm.socket.onMessage((ret) => { if (ret.data == 'pong') { return; } let data = JSON.parse(ret.data) wx.showToast({ title: data.message, icon: 'none', duration: 3000 }) }) // onError vm.socket.onError((err) => { console.log('WebSocket 连接失败:', err) }) // onClose vm.socket.onClose((ret) => { console.log('断开 WebSocket 连接', ret) }) }, // send message send (msg) { const vm = this vm.socket.send({ data: msg, success (res) { console.log('WebSocket 消息发送成功', res) }, fail (err) { console.log('WebSocket 消息发送失败', err) } }) }, // 心跳,由客户端发起 ping () { const vm = this let times = 0 // 每 10 秒钟由客户端发送一次心跳 this.interval = setInterval(function () { if (vm.socket.readyState == 1) { vm.send('ping') } else if (vm.socket.readyState == 3) { times += 1 // 超时重连,最多尝试 10 次 if (times >= 10) { wx.showToast({ title: 'WebSocket 连接已断开~', icon: 'none', duration: 3000 }) clearInterval(vm.interval) } vm.reconnect() } }, 10000) }, // WebSocket 断线重连 reconnect () { const vm = this vm.webSocketInit() },
官方能否给一个SocketTask的具体事例啊?wx.connectSocket是异步的,那么如何获取SocketTask?以及如何用SocketTask监听? 现在文档给的都是分散的,希望官方一共一个完整的例子。 现在弄得一头雾水。
2022-08-22