blue
2 years ago
committed by
Gitee
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with
37 additions and
16 deletions
-
im-ui/src/api/wssocket.js
-
im-ui/src/view/Home.vue
-
im-ui/src/view/Login.vue
-
im-uniapp/App.vue
-
im-uniapp/common/wssocket.js
|
|
|
@ -1,6 +1,7 @@ |
|
|
|
var websock = null; |
|
|
|
let rec; //断线重连后,延迟5秒重新创建WebSocket连接 rec用来存储延迟请求的代码
|
|
|
|
let isConnect = false; //连接标识 避免重复连接
|
|
|
|
let connectCallBack= null; |
|
|
|
let messageCallBack = null; |
|
|
|
let closeCallBack = null |
|
|
|
|
|
|
|
@ -16,6 +17,8 @@ let connect = (wsurl,accessToken) => { |
|
|
|
let sendInfo = JSON.parse(e.data) |
|
|
|
if (sendInfo.cmd == 0) { |
|
|
|
heartCheck.start() |
|
|
|
// 登录成功才算真正完成连接
|
|
|
|
connectCallBack && connectCallBack(); |
|
|
|
console.log('WebSocket登录成功') |
|
|
|
} else if (sendInfo.cmd == 1) { |
|
|
|
// 重新开启心跳定时
|
|
|
|
@ -119,6 +122,9 @@ let sendMessage = (agentData) => { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
let onConnect = (callback) => { |
|
|
|
connectCallBack = callback; |
|
|
|
} |
|
|
|
|
|
|
|
let onMessage = (callback) => { |
|
|
|
messageCallBack = callback; |
|
|
|
@ -134,6 +140,7 @@ export { |
|
|
|
reconnect, |
|
|
|
close, |
|
|
|
sendMessage, |
|
|
|
onConnect, |
|
|
|
onMessage, |
|
|
|
onClose |
|
|
|
onClose, |
|
|
|
} |
|
|
|
|
|
|
|
@ -80,11 +80,14 @@ |
|
|
|
methods: { |
|
|
|
init() { |
|
|
|
this.$store.dispatch("load").then(() => { |
|
|
|
|
|
|
|
// ws初始化 |
|
|
|
this.$wsApi.connect(process.env.VUE_APP_WS_URL, sessionStorage.getItem("accessToken")); |
|
|
|
this.$wsApi.onConnect(()=>{ |
|
|
|
// 加载离线消息 |
|
|
|
this.loadPrivateMessage(this.$store.state.chatStore.privateMsgMaxId); |
|
|
|
this.loadGroupMessage(this.$store.state.chatStore.groupMsgMaxId); |
|
|
|
// ws初始化 |
|
|
|
this.$wsApi.connect(process.env.VUE_APP_WS_URL, sessionStorage.getItem("accessToken")); |
|
|
|
}); |
|
|
|
this.$wsApi.onMessage((cmd, msgInfo) => { |
|
|
|
if (cmd == 2) { |
|
|
|
// 关闭ws |
|
|
|
@ -104,7 +107,7 @@ |
|
|
|
// 插入群聊消息 |
|
|
|
this.handleGroupMessage(msgInfo); |
|
|
|
} |
|
|
|
}) |
|
|
|
}); |
|
|
|
this.$wsApi.onClose((e) => { |
|
|
|
console.log(e); |
|
|
|
if (e.code != 3000) { |
|
|
|
|
|
|
|
@ -35,7 +35,7 @@ |
|
|
|
<a class="login-icon" href="https://gitee.com/bluexsx/box-im" target="_blank"> |
|
|
|
<img src="https://gitee.com/bluexsx/box-im/badge/star.svg" /> |
|
|
|
</a> |
|
|
|
<a class="login-icon" href="https://gitee.com/bluexsx/box-im" target="_blank"> |
|
|
|
<a class="login-icon" href="https://github.com/bluexsx/box-im" target="_blank"> |
|
|
|
<img src="https://img.shields.io/github/stars/bluexsx/box-im.svg?style=flat&logo=GitHub" /> |
|
|
|
</a> |
|
|
|
|
|
|
|
|
|
|
|
@ -18,9 +18,6 @@ |
|
|
|
this.initAudit(); |
|
|
|
// 初始化websocket |
|
|
|
this.initWebSocket(); |
|
|
|
// 加载离线消息 |
|
|
|
this.loadPrivateMessage(store.state.chatStore.privateMsgMaxId); |
|
|
|
this.loadGroupMessage(store.state.chatStore.groupMsgMaxId); |
|
|
|
}).catch((e) => { |
|
|
|
console.log(e); |
|
|
|
this.exit(); |
|
|
|
@ -30,6 +27,11 @@ |
|
|
|
let loginInfo = uni.getStorageSync("loginInfo") |
|
|
|
wsApi.init(); |
|
|
|
wsApi.connect(process.env.WS_URL, loginInfo.accessToken); |
|
|
|
wsApi.onConnect(() => { |
|
|
|
// 加载离线消息 |
|
|
|
this.loadPrivateMessage(store.state.chatStore.privateMsgMaxId); |
|
|
|
this.loadGroupMessage(store.state.chatStore.groupMsgMaxId); |
|
|
|
}); |
|
|
|
wsApi.onMessage((cmd, msgInfo) => { |
|
|
|
if (cmd == 2) { |
|
|
|
// 异地登录,强制下线 |
|
|
|
@ -119,7 +121,9 @@ |
|
|
|
store.commit("resetUnreadCount", chatInfo) |
|
|
|
} else { |
|
|
|
// 对方已读我的消息,修改消息状态为已读 |
|
|
|
store.commit("readedMessage", {friendId:friendId}) |
|
|
|
store.commit("readedMessage", { |
|
|
|
friendId: friendId |
|
|
|
}) |
|
|
|
|
|
|
|
} |
|
|
|
return; |
|
|
|
|
|
|
|
@ -2,6 +2,7 @@ let wsurl = ""; |
|
|
|
let accessToken = ""; |
|
|
|
let messageCallBack = null; |
|
|
|
let closeCallBack = null; |
|
|
|
let connectCallBack = null; |
|
|
|
let isConnect = false; //连接标识 避免重复连接
|
|
|
|
let rec = null; |
|
|
|
let isInit = false; |
|
|
|
@ -31,6 +32,7 @@ let init = () => { |
|
|
|
let sendInfo = JSON.parse(res.data) |
|
|
|
if (sendInfo.cmd == 0) { |
|
|
|
heartCheck.start() |
|
|
|
connectCallBack && connectCallBack(); |
|
|
|
console.log('WebSocket登录成功') |
|
|
|
} else if (sendInfo.cmd == 1) { |
|
|
|
// 重新开启心跳定时
|
|
|
|
@ -145,6 +147,10 @@ function sendMessage(agentData) { |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
let onConnect = (callback) => { |
|
|
|
connectCallBack = callback; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function onMessage(callback) { |
|
|
|
messageCallBack = callback; |
|
|
|
@ -163,6 +169,7 @@ export { |
|
|
|
reconnect, |
|
|
|
close, |
|
|
|
sendMessage, |
|
|
|
onConnect, |
|
|
|
onMessage, |
|
|
|
onClose |
|
|
|
} |