最近在做 IOT 的项目,里面有个小程序要用到 webSocket ,借这个机会,封装了一个 uniapp小程序 适用的 Socket 类,包括断线重连,心跳检测等等,具体实现如下。
直接实例化封装的 socket 类,调用 initSocket 初始化就行了,当收到消息的时候,会触发全局 $emit 事件,只需要使用 $on 监听 message 事件就行。
我这边在 globalData 里面定义了 socketObj 全局变量,在首页 onShow 生命周期里面判断当前是否已经初始化了 socket 实例,再进行 *** 作。
homevue
断线会自动重连。
如果看了觉得有帮助的,我是@ 鹏多多11997110103 ,欢迎 点赞 关注 评论;
END
往期文章
个人主页
#include <stdioh>
#include <stdlibh>
#include <timeh>
#define N 10
void sort(int arr[], int n);
int main()
{
int arr[N];
int i;
srand((unsigned int)time(NULL)); // 设置随机数种子
// 随机生成10个1到100的正整数
for (i = 0; i < N; i++) {
arr[i] = rand() % 100 + 1;
}
printf("排序前:");
for (i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
sort(arr, N); // 排序
printf("排序后:");
for (i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void sort(int arr[], int n)
{
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if (arr[j] < arr[j+1]) { // 如果前一个元素比后一个元素小,交换位置
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
首先断线有很多可能,服务器端代码错误或者网络路由问题,等等,解决这些断线问题的方法就是心跳检测,看应用需要采用几秒客户端(C)向服务器端发送ping协议(协议名称可以自己定)。然后服务器(S)要有个储存器(可以是哈希表或者是类数组)保存客户端连接句柄以及一些必要属性,还要有个时间,用来对比C每次ping的时间是否超过设定超时时间。如果超时就将C的Sock 句柄清除。到这S端就可以了。C端还要有个断线处理,监视检测自己是否断线,做个重连机制,这样一个完整的通讯就差不多了,至于其他应用就要看自己的需要通过协议来 *** 作了。 希望这些能帮到你
首先,心跳包一般是30秒或者1分钟一次才正常,3秒一次太频繁,耗损资源,降低效率,心跳包其实就是你自己定义一条数据send给服务器,服务器recv到这条数据做下判断就行了,如果1分钟没收到这条数据,就断开此客户端的socket连接,返回socket值,根据返回的值确定此客户端掉线了
MQTT是基于TCP的,因此需要考虑连接心跳,paho mqtt c的心跳处理函数
概括如下:
ping_outstanding 在下述函数中处理,该函数的调用是在接收线程中,如果收到云端的 PINGRESP 数据包,会调用该接口
lastSent 是MQTT消息包发送完成,调用的场景如下2个:
MQTTPacket_Factory()
如果收到一个MQTT packet,则设置 lastReceived
心跳是用于判断是否掉线的 只要连着的时候就会持续每隔一小会发一个心跳包,服务器如果多久没收到就判断你已经掉线了 之所以需要心跳包而不直接判断socket的联通状态,是因为在网络上有大量的连接缓存设备(比如电信局的交换机,比如一些硬件防火墙),这些设备会保存连接一段时间(几秒到十几分钟都有)举个例子 A客户端连接着B服务器 实际上是 A->中间的网络设备C->B如果A掉线了,实际上可能是A到C断了,也可能是C到B断了, 如果是A到C断了, 实际上B是无法知道的,因为对B来说A的连接(就是C)还连着 心跳机制就解决了这个问题
以上就是关于uniapp小程序webSocket封装、断线重连、心跳检测全部的内容,包括:uniapp小程序webSocket封装、断线重连、心跳检测、c语言程序设计这道题,求求、C# socket 通信系统,socket断线重连问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)