fix websocket disconnect
This commit is contained in:
parent
69c7701741
commit
c88b2b7407
@ -232,17 +232,14 @@ export class WebsocketProvider extends Observable {
|
|||||||
* @param {any} origin
|
* @param {any} origin
|
||||||
*/
|
*/
|
||||||
this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => {
|
this._awarenessUpdateHandler = ({ added, updated, removed }, origin) => {
|
||||||
|
const changedClients = added.concat(updated).concat(removed)
|
||||||
const encoder = encoding.createEncoder()
|
const encoder = encoding.createEncoder()
|
||||||
encoding.writeVarUint(encoder, messageAwareness)
|
encoding.writeVarUint(encoder, messageAwareness)
|
||||||
encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, [doc.clientID]))
|
encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(awareness, changedClients))
|
||||||
broadcastMessage(this, encoding.toUint8Array(encoder))
|
broadcastMessage(this, encoding.toUint8Array(encoder))
|
||||||
}
|
}
|
||||||
window.addEventListener('beforeunload', () => {
|
window.addEventListener('beforeunload', () => {
|
||||||
// broadcast message with local awareness state set to null (indicating disconnect)
|
awarenessProtocol.removeAwarenessStates(this.awareness, [doc.clientID], 'window unload')
|
||||||
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))
|
|
||||||
})
|
})
|
||||||
awareness.on('change', this._awarenessUpdateHandler)
|
awareness.on('change', this._awarenessUpdateHandler)
|
||||||
this._checkInterval = setInterval(() => {
|
this._checkInterval = setInterval(() => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user