first commit

This commit is contained in:
Ls
2026-02-12 12:19:20 +08:00
commit 219fd9be5c
529 changed files with 169918 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
import { EventHandler } from '@/Service/Comm/EventHandler';
import { Service, ImConnectService } from '@/Service/Im/ImConnectService';
export class WebSocket {
private socketTask: any;
private heartbeat: number = 60000;
private heartbeatInterval: any;
public ConnectSocketInit() {
ImConnectService.GetConnect().then((res: any) => {
Service.SetUserClientId(res.data.websocketId);
this.socketTask = uni.connectSocket({
url: res.data.server,
header: {
'content-type': 'application/json'
},
success: () => {
// console.log('============正准备建立websocket中================');
}
});
this.socketTask.onOpen((res: any) => {
console.log('==============WebSocket连接正常=============');
this.start();
EventHandler.ConnectBus();
// 只有连接正常打开中 ,才能正常收到消息
this.socketTask.onMessage((data: any) => {
console.log('接收到消息')
EventHandler.Events(data);
});
});
this.socketTask.onClose((e: any) => {
console.log('========已经被关闭了====================', e);
// 加了flag判断是否为手动用户主动关闭
// e && e.reason == 'user' ? '' : this.reconnect();
});
});
}
private start() {
var data = {
code: 'Heart',
method: 'Heart'
};
this.heartbeatInterval = setInterval(() => {
console.log('======start====开启心跳检测====', data);
this.send(JSON.stringify(data));
}, this.heartbeat);
}
//重新连接
public reconnect() {
//停止发送心跳
clearInterval(this.heartbeatInterval);
//如果不是人为关闭的话,进行重连
uni.$emit('ImCom');
}
// 关闭 WebSocket 连接
public CloseSocket(reason: string) {
if(!this.socketTask){
return
}
this.socketTask.close({
code: 1000,
reason: reason,
success() {
clearInterval(this.heartbeatInterval);
console.log('===============关闭 WebSocket 成功===================');
},
fail() {
console.log('===================关闭 WebSocket 失败=====================');
}
});
}
//发送消息
public send(value: any) {
if(!this.socketTask){
return
}
// 连接正常打开时 ,才能正常成功发送消息
this.socketTask.send({
data: value,
success() {},
fail() {
this.reconnect();
}
});
}
}