|
|
@ -9,7 +9,8 @@ |
|
|
export default { |
|
|
export default { |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
|
audioTip: null |
|
|
audioTip: null, |
|
|
|
|
|
reconnecting: false // 正在重连标志 |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
methods: { |
|
|
methods: { |
|
|
@ -28,6 +29,14 @@ |
|
|
wsApi.init(); |
|
|
wsApi.init(); |
|
|
wsApi.connect(UNI_APP.WS_URL, loginInfo.accessToken); |
|
|
wsApi.connect(UNI_APP.WS_URL, loginInfo.accessToken); |
|
|
wsApi.onConnect(() => { |
|
|
wsApi.onConnect(() => { |
|
|
|
|
|
// 重连成功提示 |
|
|
|
|
|
if(this.reconnecting){ |
|
|
|
|
|
this.reconnecting = false; |
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: "已重新连接", |
|
|
|
|
|
icon: 'none' |
|
|
|
|
|
}) |
|
|
|
|
|
} |
|
|
// 加载离线消息 |
|
|
// 加载离线消息 |
|
|
this.pullPrivateOfflineMessage(store.state.chatStore.privateMsgMaxId); |
|
|
this.pullPrivateOfflineMessage(store.state.chatStore.privateMsgMaxId); |
|
|
this.pullGroupOfflineMessage(store.state.chatStore.groupMsgMaxId); |
|
|
this.pullGroupOfflineMessage(store.state.chatStore.groupMsgMaxId); |
|
|
@ -50,15 +59,10 @@ |
|
|
}); |
|
|
}); |
|
|
wsApi.onClose((res) => { |
|
|
wsApi.onClose((res) => { |
|
|
console.log("ws断开", res); |
|
|
console.log("ws断开", res); |
|
|
// 1000是客户端正常主动关闭 |
|
|
// 3099是客户端正常主动关闭 |
|
|
if (res.code != 1000) { |
|
|
if (res.code != 3099) { |
|
|
// 重新连接 |
|
|
// 重新连接 |
|
|
uni.showToast({ |
|
|
this.reconnectWs(); |
|
|
title: '连接已断开,尝试重新连接...', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
}) |
|
|
|
|
|
let loginInfo = uni.getStorageSync("loginInfo") |
|
|
|
|
|
wsApi.reconnect(UNI_APP.WS_URL, loginInfo.accessToken); |
|
|
|
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
}, |
|
|
}, |
|
|
@ -96,7 +100,9 @@ |
|
|
} |
|
|
} |
|
|
// 消息回执处理,改消息状态为已读 |
|
|
// 消息回执处理,改消息状态为已读 |
|
|
if (msg.type == enums.MESSAGE_TYPE.RECEIPT) { |
|
|
if (msg.type == enums.MESSAGE_TYPE.RECEIPT) { |
|
|
store.commit("readedMessage", { friendId: msg.sendId }) |
|
|
store.commit("readedMessage", { |
|
|
|
|
|
friendId: msg.sendId |
|
|
|
|
|
}) |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
// 标记这条消息是不是自己发的 |
|
|
// 标记这条消息是不是自己发的 |
|
|
@ -117,8 +123,8 @@ |
|
|
// #endif |
|
|
// #endif |
|
|
// 被呼叫,弹出视频页面 |
|
|
// 被呼叫,弹出视频页面 |
|
|
let delayTime = 100; |
|
|
let delayTime = 100; |
|
|
if(msg.type == enums.MESSAGE_TYPE.RTC_CALL_VOICE |
|
|
if (msg.type == enums.MESSAGE_TYPE.RTC_CALL_VOICE || |
|
|
|| msg.type == enums.MESSAGE_TYPE.RTC_CALL_VIDEO){ |
|
|
msg.type == enums.MESSAGE_TYPE.RTC_CALL_VIDEO) { |
|
|
let mode = msg.type == enums.MESSAGE_TYPE.RTC_CALL_VIDEO ? "video" : "voice"; |
|
|
let mode = msg.type == enums.MESSAGE_TYPE.RTC_CALL_VIDEO ? "video" : "voice"; |
|
|
let pages = getCurrentPages(); |
|
|
let pages = getCurrentPages(); |
|
|
let curPage = pages[pages.length - 1].route; |
|
|
let curPage = pages[pages.length - 1].route; |
|
|
@ -280,6 +286,32 @@ |
|
|
return true; |
|
|
return true; |
|
|
} |
|
|
} |
|
|
return loginInfo.expireTime < new Date().getTime(); |
|
|
return loginInfo.expireTime < new Date().getTime(); |
|
|
|
|
|
}, |
|
|
|
|
|
reconnectWs() { |
|
|
|
|
|
// 记录标志 |
|
|
|
|
|
this.reconnecting = true; |
|
|
|
|
|
// 重新加载一次个人信息,目的是为了保证网络已经正常且token有效 |
|
|
|
|
|
this.reloadUserInfo().then((userInfo) => { |
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: '连接已断开,尝试重新连接...', |
|
|
|
|
|
icon: 'none', |
|
|
|
|
|
}) |
|
|
|
|
|
store.commit("setUserInfo", userInfo); |
|
|
|
|
|
// 重新连接 |
|
|
|
|
|
let loginInfo = uni.getStorageSync("loginInfo") |
|
|
|
|
|
wsApi.reconnect(UNI_APP.WS_URL, loginInfo.accessToken); |
|
|
|
|
|
}).catch(() => { |
|
|
|
|
|
// 5s后重试 |
|
|
|
|
|
setTimeout(()=>{ |
|
|
|
|
|
this.reconnectWs(); |
|
|
|
|
|
},5000) |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
reloadUserInfo() { |
|
|
|
|
|
return http({ |
|
|
|
|
|
url: '/user/self', |
|
|
|
|
|
method: 'GET' |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
}, |
|
|
}, |
|
|
onLaunch() { |
|
|
onLaunch() { |
|
|
|