websocket重连机制

该代码示例展示了如何在WebSocket连接断开时实现重连机制,无需心跳检查,因为服务器每十秒会自动发送数据。当服务器进程被杀死时,客户端会立即检测到连接断开,并开始尝试重连,最多尝试10000次。重连间隔为10秒。
摘要由CSDN通过智能技术生成

需要给websocket加上重连机制,百度了很多教程,有加上心跳机制的,因为服务器每十秒会给客户端发数据,而且直接kill掉服务器进程,客户端会马上显示断开连接,我这里就没有加心跳机制。

// 系统状态的socket
var wsIp = 'ws://127.0.0.1:18060';
var sysConnect = 10000;  // 断线重连次数
var numConnect = 0;
var socketstatusTask=null
sysSocketInit(wsIp);

//socket初始化
function sysSocketInit(service){

socketstatusTask = new WebSocket(service);
socketstatusTask.onopen = function () {
	console.log("已连接状态系统的socket服务器");
	numConnect=0;
  };
  socketstatusTask.onmessage = function (msg) {
	//  console.log("----------------------------------------------------");
	  uni.$emit("socketstatusTask",msg)
	//console.log(msg);
  };
  socketstatusTask.onclose = function () {
	console.log('系统状态服务器已经断开');
	reconnectSys(service);
  };

  // 重连
  function reconnectSys(service) {
	// lockReconnect加锁,防止onclose、onerror两次重连
	if(sysConnect>0){
		sysConnect --;
		numConnect ++;
		console.log("第"+numConnect+"次重连");
		// 进行重连
		setTimeout(function(){
			sysSocketInit(service);
		},10000);

	}else{
	  console.log("系统状态服务器连接已超时");
	}
  }

  // 心跳 * 回应
//   setInterval(function(){
// 	socketstatusTask.send('msg from client');
//   }, 1000*20);
}

代码如上,定义重连次数为10000次,心跳回应我注释了,不然会向服务器发送没必要的数据。一开始我没打开语音系统服务器,显示断开连接并且重连
在这里插入图片描述
打开语音服务器,重新连接成功,开始推送数据

在这里插入图片描述
关闭服务器,从新开始计数并尝试重连
在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值