This commit is contained in:
2022-12-28 10:08:51 +08:00
parent 0fa93d545e
commit 3881370b6e
151 changed files with 17044 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
import store from "@/store";
import config from "@/config/config";
import WsSocket from "@/plugins/ws-socket";
import { getToken } from "@/utils/auth";
import { Notification } from "element-ui";
// 引入消息处理类
import KeyboardEvent from "@/im-server/event/keyboard";
import LoginEvent from "@/im-server/event/login";
import TalkEvent from "@/im-server/event/talk";
import RevokeEvent from "@/im-server/event/revoke";
import GroupJoinEvent from "@/im-server/event/group-join";
import FriendApplyEvent from "@/im-server/event/friend-apply";
/**
* SocketInstance 连接实例
*
* 注释: 所有 WebSocket 消息接收处理在此实例中处理
*/
class SocketInstance {
/**
* WsSocket 实例
*/
socket;
/**
* SocketInstance 初始化实例
*/
constructor() {
this.socket = new WsSocket(
() => {
return `${config.BASE_WS_URL}/` + getToken();
},
{
onError: (evt) => {
console.log("Websocket 连接失败回调方法");
},
// Websocket 连接成功回调方法
onOpen: (evt) => {
this.updateSocketStatus(true);
},
// Websocket 断开连接回调方法
onClose: (evt) => {
this.updateSocketStatus(false);
},
}
);
this.registerEvents();
}
// 连接 WebSocket 服务
connect() {
console.log("🔗连接 WebSocket");
this.socket.connection();
}
/**
* 注册回调消息处理事件
*/
registerEvents() {
this.socket.on("event_talk", (data) => {
console.log("接收到消息,event_talk", data);
new TalkEvent(data).handle();
});
this.socket.on("event_online_status", (data) => {
new LoginEvent(data).handle();
});
this.socket.on("event_keyboard", (data) => {
console.log("推送", data);
new KeyboardEvent(data).handle();
});
this.socket.on("event_revoke_talk", (data) => {
new RevokeEvent(data).handle();
});
this.socket.on("event_friend_apply", (data) => {
new FriendApplyEvent(data).handle();
});
this.socket.on("join_group", (data) => {
new GroupJoinEvent(data).handle();
});
this.socket.on("event_error", (data) => {
Notification({
title: "友情提示",
message: data.message,
type: "warning",
});
});
}
/**
* 更新 WebSocket 连接状态
*
* @param {Boolean} status 连接状态
*/
updateSocketStatus(status) {
store.commit("UPDATE_SOCKET_STATUS", status);
}
/**
* 推送消息
*
* @param {String} event 事件名
* @param {Object} data 数据
*/
emit(event, data) {
this.socket.emit(event, data);
}
}
export default new SocketInstance();