feat: ws消息队列延迟处理

This commit is contained in:
TsMask
2024-02-05 18:36:40 +08:00
parent 5682569d10
commit ecd8f4c7a1
2 changed files with 23 additions and 14 deletions

View File

@@ -28,6 +28,7 @@
"js-base64": "^3.7.5",
"js-cookie": "^3.0.5",
"nprogress": "^0.2.0",
"p-queue": "^8.0.1",
"pinia": "^2.1.7",
"vue": "~3.3.13",
"vue-codemirror": "^6.1.1",

View File

@@ -10,10 +10,12 @@ import {
} from './useUserActivity';
import { upfTotalFlow, upfTFParse } from './useUPFTotalFlow';
import { neStateParse } from './useTopology';
import PQueue from 'p-queue';
/**websocket连接 */
export default function useWS() {
const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true });
/**发消息 */
function wsSend(data: Record<string, any>) {
@@ -103,25 +105,31 @@ export default function useWS() {
// ueEvent UE会话事件
case '1010':
if (data.data) {
const v = ueEventParse(data.data);
if (v) {
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
eventData.value.pop();
}
queue.add(async () => {
const v = ueEventParse(data.data);
if (v) {
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
await new Promise(resolve => setTimeout(resolve, 800));
eventData.value.pop();
}
});
}
break;
// cdrEvent CDR会话事件
case '1005':
if (data.data) {
const v = cdrEventParse(data.data);
if (v) {
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
eventData.value.pop();
}
queue.add(async () => {
const v = cdrEventParse(data.data);
if (v) {
eventData.value.unshift(v);
eventTotal.value += 1;
eventId.value = v.eId;
await new Promise(resolve => setTimeout(resolve, 800));
eventData.value.pop();
}
});
}
break;
}