add option to disable broadcastchannel - closes #103

This commit is contained in:
Kevin Jahns 2022-04-22 12:43:38 +02:00
parent cc6df43a74
commit 3c774953ec

View File

@ -187,8 +187,17 @@ export class WebsocketProvider extends Observable {
* @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill * @param {typeof WebSocket} [opts.WebSocketPolyfill] Optionall provide a WebSocket polyfill
* @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds * @param {number} [opts.resyncInterval] Request server state every `resyncInterval` milliseconds
* @param {number} [opts.maxBackoffTime] Maximum amount of time to wait before trying to reconnect (we try to reconnect using exponential backoff) * @param {number} [opts.maxBackoffTime] Maximum amount of time to wait before trying to reconnect (we try to reconnect using exponential backoff)
* @param {boolean} [opts.disableBc] Disable cross-tab BroadcastChannel communication
*/ */
constructor (serverUrl, roomname, doc, { connect = true, awareness = new awarenessProtocol.Awareness(doc), params = {}, WebSocketPolyfill = WebSocket, resyncInterval = -1, maxBackoffTime = 2500 } = {}) { constructor (serverUrl, roomname, doc, {
connect = true,
awareness = new awarenessProtocol.Awareness(doc),
params = {},
WebSocketPolyfill = WebSocket,
resyncInterval = -1,
maxBackoffTime = 2500,
disableBc = false
} = {}) {
super() super()
// ensure that url is always ends with / // ensure that url is always ends with /
while (serverUrl[serverUrl.length - 1] === '/') { while (serverUrl[serverUrl.length - 1] === '/') {
@ -205,6 +214,7 @@ export class WebsocketProvider extends Observable {
this.wsconnected = false this.wsconnected = false
this.wsconnecting = false this.wsconnecting = false
this.bcconnected = false this.bcconnected = false
this.disableBc = disableBc
this.wsUnsuccessfulReconnects = 0 this.wsUnsuccessfulReconnects = 0
this.messageHandlers = messageHandlers.slice() this.messageHandlers = messageHandlers.slice()
/** /**
@ -328,6 +338,9 @@ export class WebsocketProvider extends Observable {
} }
connectBc () { connectBc () {
if (this.disableBc) {
return
}
if (!this.bcconnected) { if (!this.bcconnected) {
bc.subscribe(this.bcChannel, this._bcSubscriber) bc.subscribe(this.bcChannel, this._bcSubscriber)
this.bcconnected = true this.bcconnected = true