mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-02 16:16:39 +08:00
42 lines
1020 B
TypeScript
42 lines
1020 B
TypeScript
// To store message streaming controller
|
|
export const ChatControllerPool = {
|
|
controllers: {} as Record<string, AbortController>,
|
|
|
|
addController(
|
|
sessionId: string,
|
|
messageId: string,
|
|
controller: AbortController,
|
|
) {
|
|
const key = this.key(sessionId, messageId);
|
|
this.controllers[key] = controller;
|
|
return key;
|
|
},
|
|
|
|
stop(sessionId: string, messageId: string) {
|
|
const key = this.key(sessionId, messageId);
|
|
const controller = this.controllers[key];
|
|
controller?.abort();
|
|
},
|
|
|
|
stopAll() {
|
|
Object.values(this.controllers).forEach((v) => v.abort());
|
|
},
|
|
|
|
hasPending() {
|
|
return Object.values(this.controllers).length > 0;
|
|
},
|
|
|
|
getPendingMessageId() {
|
|
return Object.keys(this.controllers).map((v) => v.split(",").at(-1));
|
|
},
|
|
|
|
remove(sessionId: string, messageId: string) {
|
|
const key = this.key(sessionId, messageId);
|
|
delete this.controllers[key];
|
|
},
|
|
|
|
key(sessionId: string, messageIndex: string) {
|
|
return `${sessionId},${messageIndex}`;
|
|
},
|
|
};
|