diff --git a/packages/loro-websocket/src/client/index.ts b/packages/loro-websocket/src/client/index.ts index 3836cbd..3f891aa 100644 --- a/packages/loro-websocket/src/client/index.ts +++ b/packages/loro-websocket/src/client/index.ts @@ -61,7 +61,7 @@ export class LoroWebsocketClient { }> = []; constructor( - private ops: { url: string; pingIntervalMs?: number; disablePing?: boolean } + private ops: { url: string; pingIntervalMs?: number; disablePing?: boolean, onWsClose?: () => void } ) { this.connectedPromise = new Promise((resolve, reject) => { this.ws = new WebSocket(this.ops.url); @@ -100,6 +100,7 @@ export class LoroWebsocketClient { // Clear timers and pending waiters on close this.ws.addEventListener('close', () => { this.clearPingTimer(); + this.ops.onWsClose?.(); this.rejectAllPingWaiters(new Error("WebSocket closed")); }); }