ChatGPT-Next-Web/app/client/controller.ts

38 lines
914 B
TypeScript
Raw Permalink Normal View History

2023-05-14 15:00:17 +00:00
// To store message streaming controller
export const ChatControllerPool = {
controllers: {} as Record<string, AbortController>,
addController(
2023-07-09 11:37:42 +00:00
sessionId: string,
messageId: string,
2023-05-14 15:00:17 +00:00
controller: AbortController,
) {
2023-07-09 11:37:42 +00:00
const key = this.key(sessionId, messageId);
2023-05-14 15:00:17 +00:00
this.controllers[key] = controller;
return key;
},
2023-07-09 11:37:42 +00:00
stop(sessionId: string, messageId: string) {
const key = this.key(sessionId, messageId);
2023-05-14 15:00:17 +00:00
const controller = this.controllers[key];
controller?.abort();
},
stopAll() {
Object.values(this.controllers).forEach((v) => v.abort());
},
hasPending() {
return Object.values(this.controllers).length > 0;
},
2023-07-09 11:37:42 +00:00
remove(sessionId: string, messageId: string) {
const key = this.key(sessionId, messageId);
2023-05-14 15:00:17 +00:00
delete this.controllers[key];
},
2023-07-09 11:37:42 +00:00
key(sessionId: string, messageIndex: string) {
return `${sessionId},${messageIndex}`;
2023-05-14 15:00:17 +00:00
},
};