// 站内信
// 判断是否已连接
checkOpenSocket () {
let that = this;
uni.sendSocketMessage({
data: 'heartCheck',
success: (res) => {
return;
},
fail: (err) => { // 未连接打开websocket连接
that.openConnection();
console.log('未连接打开websocket连接',err);
}
});
},
openConnection () { // 打开连接
uni.closeSocket(); // 确保已经关闭后再重新打开
uni.connectSocket({
url: SOCKTURL, // url 填写自己的websocket地址
success(res) {
console.log('连接成功 connectSocket=', res);
},
fail(err) {
console.log('连接失败 connectSocket=', err);
}
});
uni.onSocketOpen((res) => {
uni.sendSocketMessage({
data: JSON.stringify({
userCode: uni.getStorageSync('userCode')
}),
success: (res) => {
console.log('第一次发送成功', res);
// that.openConnection();
},
fail: (err) => {
console.log('第一次发送失败', err);
that.reconnect();
}
});
console.log('连接成功', res);
});
this.onSocketMessage(); // 打开成功监听服务器返回的消息
},
// 打开成功监听服务器返回的消息
onSocketMessage () { // 消息
var that = this
this.timeout = 1000 * 8;
this.timeoutObj = null;
uni.onSocketMessage((msg) => {
console.log('res',msg.data);
// 写自己的逻辑 。。。
this.reset(); // 检测心跳reset,防止长时间连接导致连接关闭
})
},
// 检测心跳reset
reset () {
clearInterval(this.timeoutObj);
this.start(); // 启动心跳
},
// 启动心跳 start
start () {
let that = this;
this.timeoutObj = setInterval(function(){
uni.sendSocketMessage({
data: 'heartCheck',
success: (res) => {
console.log('连接中....',res);
// that.openConnection();
},
fail: (err) => {
console.log('连接失败重新连接....');
// that.reconnect();
that.openConnection();
}
});
}, this.timeout);
},
timeout: 8 * 1000, // 心跳检测时间
timeoutObj:null,
调用 this.checkOpenSocket()