feat: ws消息队列延迟处理
This commit is contained in:
@@ -28,6 +28,7 @@
|
|||||||
"js-base64": "^3.7.5",
|
"js-base64": "^3.7.5",
|
||||||
"js-cookie": "^3.0.5",
|
"js-cookie": "^3.0.5",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
|
"p-queue": "^8.0.1",
|
||||||
"pinia": "^2.1.7",
|
"pinia": "^2.1.7",
|
||||||
"vue": "~3.3.13",
|
"vue": "~3.3.13",
|
||||||
"vue-codemirror": "^6.1.1",
|
"vue-codemirror": "^6.1.1",
|
||||||
|
|||||||
@@ -10,10 +10,12 @@ import {
|
|||||||
} from './useUserActivity';
|
} from './useUserActivity';
|
||||||
import { upfTotalFlow, upfTFParse } from './useUPFTotalFlow';
|
import { upfTotalFlow, upfTFParse } from './useUPFTotalFlow';
|
||||||
import { neStateParse } from './useTopology';
|
import { neStateParse } from './useTopology';
|
||||||
|
import PQueue from 'p-queue';
|
||||||
|
|
||||||
/**websocket连接 */
|
/**websocket连接 */
|
||||||
export default function useWS() {
|
export default function useWS() {
|
||||||
const ws = new WS();
|
const ws = new WS();
|
||||||
|
const queue = new PQueue({ concurrency: 1, autoStart: true });
|
||||||
|
|
||||||
/**发消息 */
|
/**发消息 */
|
||||||
function wsSend(data: Record<string, any>) {
|
function wsSend(data: Record<string, any>) {
|
||||||
@@ -103,25 +105,31 @@ export default function useWS() {
|
|||||||
// ueEvent UE会话事件
|
// ueEvent UE会话事件
|
||||||
case '1010':
|
case '1010':
|
||||||
if (data.data) {
|
if (data.data) {
|
||||||
const v = ueEventParse(data.data);
|
queue.add(async () => {
|
||||||
if (v) {
|
const v = ueEventParse(data.data);
|
||||||
eventData.value.unshift(v);
|
if (v) {
|
||||||
eventTotal.value += 1;
|
eventData.value.unshift(v);
|
||||||
eventId.value = v.eId;
|
eventTotal.value += 1;
|
||||||
eventData.value.pop();
|
eventId.value = v.eId;
|
||||||
}
|
await new Promise(resolve => setTimeout(resolve, 800));
|
||||||
|
eventData.value.pop();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// cdrEvent CDR会话事件
|
// cdrEvent CDR会话事件
|
||||||
case '1005':
|
case '1005':
|
||||||
if (data.data) {
|
if (data.data) {
|
||||||
const v = cdrEventParse(data.data);
|
queue.add(async () => {
|
||||||
if (v) {
|
const v = cdrEventParse(data.data);
|
||||||
eventData.value.unshift(v);
|
if (v) {
|
||||||
eventTotal.value += 1;
|
eventData.value.unshift(v);
|
||||||
eventId.value = v.eId;
|
eventTotal.value += 1;
|
||||||
eventData.value.pop();
|
eventId.value = v.eId;
|
||||||
}
|
await new Promise(resolve => setTimeout(resolve, 800));
|
||||||
|
eventData.value.pop();
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user