mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
improve WsChatService
This commit is contained in:
@@ -24,8 +24,18 @@ export class WsChatService {
|
||||
support: ["1"]
|
||||
}
|
||||
|
||||
this.ws.send(connectMessage, 'connect', false)
|
||||
this.ws.send({msg:"pong"},'recoonect', false)
|
||||
this.ws.send(connectMessage, 'connectMessage', false)
|
||||
this.ws.send({msg:"pong"}, 'pong', false)
|
||||
|
||||
this.ws.registerCallback({
|
||||
type:'Onmessage',
|
||||
key: this.constructor.name+'ping/pong',
|
||||
funx:(message: any) => {
|
||||
if(message.msg == "ping") {
|
||||
this.ws.send({msg:"pong"},'reconnect', false)
|
||||
}
|
||||
}})
|
||||
|
||||
}
|
||||
|
||||
login() {
|
||||
@@ -266,20 +276,21 @@ export class WsChatService {
|
||||
}
|
||||
|
||||
// socket class ==================================================================
|
||||
private socket!: WebSocket;
|
||||
private wsUrl = ''
|
||||
private wsMsgQueue : msgQueue[] = []
|
||||
private socket!: WebSocket;
|
||||
private wsMsgQueue : {[key: string]: msgQueue} = {}
|
||||
private wsCallbacks: {[key: string]: wsCallbacksParams} = {}
|
||||
|
||||
private ws = {
|
||||
connected: false,
|
||||
registerCallback:(params: wsCallbacksParams) => {
|
||||
|
||||
if(!params.requestId) {
|
||||
params.requestId = uuidv4()
|
||||
let id = params.requestId || params.key
|
||||
|
||||
if(id) {
|
||||
id = uuidv4()
|
||||
}
|
||||
|
||||
this.wsCallbacks[params.requestId] = {
|
||||
this.wsCallbacks[id] = {
|
||||
type: params.type,
|
||||
funx: params.funx
|
||||
}
|
||||
@@ -302,30 +313,24 @@ export class WsChatService {
|
||||
wsMsgQueue:()=> {
|
||||
let RunsQueue = []
|
||||
|
||||
this.wsMsgQueue.forEach((item, index, object) => {
|
||||
for (const [key, item] of Object.entries(this.wsMsgQueue)) {
|
||||
|
||||
if(item.loginRequired == true && this.isLogin == true) {
|
||||
// console.log('run msgQueue ',index)
|
||||
this.ws.send(item.message, item.requestId, item.loginRequired);
|
||||
RunsQueue.push(item.requestId)
|
||||
delete this.wsMsgQueue[key]
|
||||
} else if(item.loginRequired == false) {
|
||||
// console.log('run msgQueue ',index)
|
||||
this.ws.send(item.message, item.requestId, item.loginRequired);
|
||||
RunsQueue.push(item.requestId)
|
||||
delete this.wsMsgQueue[key]
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
// remove wsMsgQueue
|
||||
RunsQueue.forEach((requestId)=>{
|
||||
this.wsMsgQueue = this.wsMsgQueue.filter(e=> e.requestId != requestId)
|
||||
})
|
||||
|
||||
}
|
||||
},
|
||||
send: (message: object, requestId = uuidv4(), loginRequired) => {
|
||||
|
||||
if (this.ws.connected == false || loginRequired == true && this.isLogin == false) { // save data to send when back online
|
||||
// console.log('save msgQueue this.ws.connected == false || loginRequired == true && this.isLogin == false',this.ws.connected, loginRequired, this.isLogin)
|
||||
this.wsMsgQueue.push({message, requestId, loginRequired})
|
||||
this.wsMsgQueue[requestId] = {message, requestId, loginRequired}
|
||||
} else {
|
||||
let messageStr = JSON.stringify(message)
|
||||
this.socket.send(messageStr)
|
||||
|
||||
Reference in New Issue
Block a user