Skip to content

Commit

Permalink
Merge pull request #71 from livingspec/fix-beforeunload-memory-leak
Browse files Browse the repository at this point in the history
Fix beforeunload memory leak
  • Loading branch information
dmonad authored Jun 25, 2021
2 parents 0007200 + 7afa2e6 commit 16237ff
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions src/y-websocket.js
Original file line number Diff line number Diff line change
Expand Up @@ -277,9 +277,10 @@ export class WebsocketProvider extends Observable {
broadcastMessage(this, encoding.toUint8Array(encoder))
}
if (typeof window !== 'undefined') {
window.addEventListener('beforeunload', () => {
this._beforeUnloadHandler = () => {
awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload')
})
};
window.addEventListener('beforeunload', this._beforeUnloadHandler)
}
awareness.on('update', this._awarenessUpdateHandler)
this._checkInterval = /** @type {any} */ (setInterval(() => {
Expand Down Expand Up @@ -315,6 +316,9 @@ export class WebsocketProvider extends Observable {
}
clearInterval(this._checkInterval)
this.disconnect()
if (this._beforeUnloadHandler) {
window.removeEventListener('beforeunload', this._beforeUnloadHandler)
}
this.awareness.off('update', this._awarenessUpdateHandler)
this.doc.off('update', this._updateHandler)
super.destroy()
Expand Down

0 comments on commit 16237ff

Please sign in to comment.