From c88b2b74079ce6a21a265e3aa486c62e3967fe43 Mon Sep 17 00:00:00 2001 From: Kevin Jahns Date: Fri, 6 Dec 2019 00:59:59 +0100 Subject: [PATCH] fix websocket disconnect --- src/y-websocket.js | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/y-websocket.js b/src/y-websocket.js index ec10cbb..0a635ef 100644 --- a/src/y-websocket.js +++ b/src/y-websocket.js @@ -232,17 +232,14 @@ export class WebsocketProvider extends Observable { * @param {any} origin */ this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => { + const changedClients = added.concat(updated).concat(removed) const encoder = encoding.createEncoder() encoding.writeVarUint(encoder, messageAwareness) - encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, [doc.clientID])) + encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients)) broadcastMessage(this, encoding.toUint8Array(encoder)) } window.addEventListener('beforeunload', () => { - // broadcast message with local awareness state set to null (indicating disconnect) - const encoder = encoding.createEncoder() - encoding.writeVarUint(encoder, messageAwareness) - encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map())) - broadcastMessage(this, encoding.toUint8Array(encoder)) + awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload') }) awareness.on('change', this._awarenessUpdateHandler) this._checkInterval = setInterval(() => {