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