【uni-app多端】修复stmopjs下plus-websocket无心跳的问题

embedded/2024/11/21 17:32:31/

从这篇文章接着向下看:

uniapp plus-websocketstompjs连接教程 安卓ios手机端有效 - 简书

按照文章的方式,能够实现APP下stmopjs长连接。但是有一个问题,就是会频繁输出

res-创建连接-1-

 跟踪连接,会发现连接都会在大约40s后掉线断开,然后由于stompjs保活机制又进行重连。在重连过程中,对应的消息接收不到。导致出现部分消息丢失的情况。

目前解决的办法,是自己实现一个心跳逻辑,每隔指定的时间发送。就完成了连接保活。修改如下:

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 协议的默认写法,可供参考})} else {appWs = new WebSocket(amqpServerUrl)return appWs// Android | IOS}},。。。。。const appHeartbeat = () => {setTimeout(() => {if (appWs.connected) {const buffer = new ArrayBuffer(1) // 创建一个1字节的ArrayBufferconst view = new Uint8Array(buffer)view[0] = 0x09 // 根据RFC6455, opcode 0x9 表示ping帧appWs.send(buffer)appHeartbeat()}}, HEARTBEAT_INTERVAL)
}

然后在onConnect后激活心跳

        onConnect: () => {// connect to user channel....// #ifdef APP-PLUSappHeartbeat()// #endif},

这样就解决了掉线问题


http://www.ppmy.cn/embedded/139387.html

相关文章

推荐一款流程图和图表绘制工具:WizFlow Flowcharter Pro

WizFlow Flowcharter是一款易于使用、功能丰富的Windows流程图和图表绘制工具。它允许用户使用超过一百种预定义的形状和箭头定义形状“样式”。您可以将自己的样式保存在图表模板中,以建立自己的绘图方法。WizFlow附带了完整的流程图模板,以帮助您入门。…

网络安全等级测评师

安全通信网络 概述:安全通信网络针对网络架构和通信传输提出了安全控制要求,主要对象为广域网、城域网、局域网的通信传输及网络架构等,涉及的安全控制点包括网络架构、通信传输、可信验证。 1.网络架构 1)应保证网络设备的业务处…

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作

【Linux驱动开发】irq中断配置API及中断应用 阻塞休眠和非阻塞的驱动操作 文章目录 中断操作注册和释放中断中断服务函数使能和禁止上半部和下半部软中断tasklet工作队列 设备节点中的中断中断号API函数获取中断号获取中断信息 中断应用读取设备树节点获取中断号获取中断触发方…

Linux下多线程

在Linux下的底层里并没有多线程这个概念,取而代之的是轻量级进程的概念。应为在Llinu下内核下并没有TCB,而只有PCB。 线程是什么 在⼀个程序⾥的⼀个执⾏路线就叫做线程(thread)。更准确的定义是:线程是“⼀个进程内部 的控制序…

【Git从入门到精通】——Git分支介绍与GitHub相关知识总结

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

C++中的组合模式

组合模式(Composite Pattern) 组合模式是一种结构型设计模式,它将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端可以统一地处理单个对象和对象组合。这个模式特别适用于需要表示层次结构的场景,例如文件…

用Python“拍立淘”:在1688的海洋里寻找宝藏

想象一下,你是一名勇敢的探险家,手持一张神秘的藏宝图,准备在阿里巴巴的1688海洋中寻找那些隐藏的宝贝。但这次,你的武器不是传统的铲子和罗盘,而是Python爬虫。我们将一起编写一段代码,让它成为我们的“拍…

C++小白实习日记——Day 5 gitee怎么删文件,测试文件怎么写循环

昨晚一直内耗,一个程序写了三天写不出来,主要是耗时太多了,老板一直不满意。想在VScode上跑一下,昨晚一直报错。今天来公司重新搞了一下, 主要工作有: 1,读取当前时间用tscns 2,输…