信譽(yù)好的武漢網(wǎng)站建設(shè)seo課培訓(xùn)
從這篇文章接著向下看:
uniapp plus-websocket 和stompjs連接教程 安卓ios手機(jī)端有效 - 簡(jiǎn)書
按照文章的方式,能夠?qū)崿F(xiàn)APP下stmopjs長(zhǎng)連接。但是有一個(gè)問題,就是會(huì)頻繁輸出
res-創(chuàng)建連接-1-
?跟蹤連接,會(huì)發(fā)現(xiàn)連接都會(huì)在大約40s后掉線斷開,然后由于stompjs?;顧C(jī)制又進(jìn)行重連。在重連過程中,對(duì)應(yīng)的消息接收不到。導(dǎo)致出現(xiàn)部分消息丟失的情況。
目前解決的辦法,是自己實(shí)現(xiàn)一個(gè)心跳邏輯,每隔指定的時(shí)間發(fā)送。就完成了連接?;睢P薷娜缦?#xff1a;
import socket from 'plus-websocket'class WebSocketPolyfill {constructor(url) {
。。。。connected() {return socket.connected}
}export default WebSocketPolyfill
client = new Client({// #ifndef H5webSocketFactory() {if (isMp) {// 微信小程序return new Ws({url: amqpServerUrl,protocols: ['v12.stomp', 'v11.stomp', 'v10.stomp'] // ← 這是 stomp 協(xié)議的默認(rèn)寫法,可供參考})} else {appWs = new WebSocket(amqpServerUrl)return appWs// Android | IOS}},。。。。。const appHeartbeat = () => {setTimeout(() => {if (appWs.connected) {const buffer = new ArrayBuffer(1) // 創(chuàng)建一個(gè)1字節(jié)的ArrayBufferconst view = new Uint8Array(buffer)view[0] = 0x09 // 根據(jù)RFC6455, opcode 0x9 表示ping幀appWs.send(buffer)appHeartbeat()}}, HEARTBEAT_INTERVAL)
}
然后在onConnect后激活心跳
onConnect: () => {// connect to user channel....// #ifdef APP-PLUSappHeartbeat()// #endif},
這樣就解決了掉線問題