Socket

全局数据data

data(){
    return{
        connectWebsocket:1,//连接服务器对象
        socketTask:null,//[发送、接收、关闭socket都由这个对象操作]
        is_open_socket:false,//true:服务器连接成功,false连接不成功
        setInterData:null,//心跳
    }
},

连接服务器

onLoad() {
    that.connectSocketInit(); //连接服务器
}

connectSocketInit具体写法 

连接socket服务器次数加一

const that = this;
that.connectWebsocket = that.connectWebsocket + 1;

判断连接次数

  • 判断连接次数是否大于10次,是10次就调用that.closeSocket() 函数关闭连接服务器的操作
const that = this;
if (that.connectWebsocket >= 10) {
	that.closeSocket();
}

closeSocket()断开socket连接

  •  将连接服务器赋值为null
  • 将心跳断开
// 关闭websocket【离开这个页面的时候执行关闭】
closeSocket(val) {
	const that = this;
	that.manualShutdown = true;
	that.socketTask.close({
		success(res) {
			that.is_open_socket = false;
			console.log("关闭成功", that.setInterData)
			clearInterval(that.setInterData)
			that.setInterData = null;
		},
		fail(err) {
			clearInterval(that.setInterData)
			console.log("关闭失败4", err)
		}
	})
},

socketTask是否为空

socketTask不为空也关闭socket连接,且将socketTask赋值为null

const that = this;
if (that.socketTask != null) {
	that.closeSocketAgain()
	that.socketTask = null;
}

连接socketT服务器代码 

that.socketTask = uni.connectSocket({
	url: "服务器地址",
	success(data) {},
	fail(data) {}
});

that.socketTask.onOpen()

// 消息的发送和接收必须在正常连接打开中,才能发送或接收【否则会失败】
that.socketTask.onOpen((res) => {
	that.is_open_socket = true;
	that.heartbeatFormat();
})

 心跳格式

第一: 判断心跳是否为空,不为空结束心跳。

第二:启动心跳,每隔6分钟发送一次心跳给服务器

// 心跳格式
heartbeatFormat() {
	const that = this;
    //判断心跳是否为有,有就清除心跳,重新起一个心跳
	if (that.setInterData != null) {
		clearInterval(that.setInterData);
		console.log('先清除掉');
	}
    //启动心跳,6分钟发送一次心跳给服务器
	that.setInterData = setInterval(() => {
	    that.socketTask.send({
		    data: '{"msgType":"HEART_BEAT","content":"HEART_BEAT"}',
			    success(res) {
			        console.log("消息发送成功", res);
			    },
	    });
	}, 60000)
},

that.socketTask.onMessage 

实时接收服务器返回的信息 ,然后对接收到的信息进行处理

that.socketTask.onMessage((res) => {
    console.log('收到服务器的返回消息', res);
})

that.socketTask.onClose ()

监听socket服务器的连接断开,查看是主动断开还是被动断开,

主动断开不管,被动断开需要进行从新连接

that.socketTask.onClose((e, res) => {
	const that = this;
	console.log("服务器断链接,挂掉了:", e, res);
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值