diff --git a/static/src/model.tsx b/static/src/model.tsx index ececc57..3839a7f 100644 --- a/static/src/model.tsx +++ b/static/src/model.tsx @@ -115,7 +115,6 @@ export function sendMessage() { } export function requestMailbox() { - deleteMailbox(); UDN.requestMailbox(); } diff --git a/subscriptionHandler.ts b/subscriptionHandler.ts index 8d1d252..f108ec7 100644 --- a/subscriptionHandler.ts +++ b/subscriptionHandler.ts @@ -29,20 +29,13 @@ export class Mailbox implements Subscriber { return this.expiryDate < today; } - // init + // manage constructor(ws: WS) { - this.ws = ws; - this.sendId(); - } - - sendId(): void { - if (!this.ws) return; - sendWebSocketMessage( { assignedMailboxId: this.id, }, - this.ws + ws ); } @@ -57,6 +50,12 @@ export class Mailbox implements Subscriber { ); } + delete(): void { + subscriptionMap.deleteSubscriber(this); + if (!this.ws) return; + sendWebSocketMessage({ deletedMailbox: this.id }, this.ws); + } + // storage messages = new Set(); diff --git a/websocket-handler.ts b/websocket-handler.ts index 45143b7..f22349b 100644 --- a/websocket-handler.ts +++ b/websocket-handler.ts @@ -24,11 +24,12 @@ export interface WebSocketMessage { deletingMailbox?: string; assignedMailboxId?: string; // sent by server connectedMailboxId?: string; // sent by server + deletedMailbox?: string; // sent by server // subscribing to channel subscribeChannel?: string; unsubscribeChannel?: string; - subscribed?: boolean; // sent by server to confirm subscription + subscribed?: boolean; // sent by server //sending message messageChannel?: string; @@ -195,7 +196,6 @@ export function processMessage( const mailbox = mailboxes.get(deletingMailbox); if (!mailbox) return; removeMailbox(mailbox); - ws.close(); }); // OTHER SERVER @@ -215,7 +215,7 @@ export function removeExpiredMailboxes() { } export function removeMailbox(mailbox: Mailbox) { - subscriptionMap.deleteSubscriber(mailbox); + mailbox.delete(); mailboxes.delete(mailbox.id); }