71 lines
1.6 KiB
JavaScript
71 lines
1.6 KiB
JavaScript
import fc from '@/common/publicFc.js'
|
||
let timer=null
|
||
let retimer=null
|
||
export default {
|
||
socketTask:null,
|
||
// 连接WebSocket
|
||
connectSocket() {
|
||
this.socketTask=uni.connectSocket({
|
||
url: 'wss://im-api.q3z3.com/ws?Authorization=' + uni.getStorageSync('Authorization'),
|
||
complete: () => {}
|
||
});
|
||
this.socketTask.onOpen(res => {
|
||
console.log('WebSocket连接已打开!');
|
||
// 设置心跳
|
||
timer=setInterval(()=>{
|
||
uni.sendSocketMessage({
|
||
data:'isConnact',
|
||
success:res=>{
|
||
if(res.errMsg=='sendSocketMessage:ok'){
|
||
console.log('WebSocket已连接')
|
||
}else{
|
||
this.connectSocket()
|
||
}
|
||
}
|
||
})
|
||
},5000)
|
||
})
|
||
// 监听接收
|
||
this.socketTask.onMessage(res => {
|
||
if(res.data=='ok'){
|
||
return
|
||
}
|
||
var data = JSON.parse(res.data);
|
||
fc.getPush(data);
|
||
console.log('WebSocket接收消息!');
|
||
})
|
||
// 监听关闭
|
||
this.socketTask.onClose(res => {
|
||
console.log('WebSocket连接已关闭!');
|
||
let token= uni.getStorageSync('Authorization');
|
||
if(this.socketTask&&token){
|
||
this.socketTaskClose()
|
||
retimer=setTimeout(()=>{
|
||
this.connectSocket()
|
||
},5000)
|
||
}
|
||
})
|
||
// 监听异常
|
||
this.socketTask.onError(res => {
|
||
console.log('WebSocket连接打开失败,正在尝试重新打开!');
|
||
if(this.socketTask){
|
||
this.socketTaskClose()
|
||
retimer=setTimeout(()=>{
|
||
this.connectSocket()
|
||
},5000)
|
||
}
|
||
|
||
});
|
||
|
||
},
|
||
// 关闭WebSocket
|
||
socketTaskClose() {
|
||
if(this.socketTask){
|
||
this.socketTask.close()
|
||
clearInterval(timer)
|
||
clearTimeout(retimer)
|
||
console.log('关闭WebSocket!');
|
||
}
|
||
},
|
||
}
|