Use url without query params for broadcastchannel. fixes #12

This commit is contained in:
Kevin Jahns 2020-04-02 11:55:25 +02:00
parent 2e3a1c736d
commit 15a9c99833

View File

@ -177,6 +177,7 @@ export class WebsocketProvider extends Observable {
serverUrl = serverUrl.slice(0, serverUrl.length - 1) serverUrl = serverUrl.slice(0, serverUrl.length - 1)
} }
const encodedParams = url.encodeQueryParams(params) const encodedParams = url.encodeQueryParams(params)
this.bcChannel = serverUrl + '/' + roomname
this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '?' + encodedParams) this.url = serverUrl + '/' + roomname + (encodedParams.length === 0 ? '' : '?' + encodedParams)
this.roomname = roomname this.roomname = roomname
this.doc = doc this.doc = doc
@ -212,7 +213,7 @@ export class WebsocketProvider extends Observable {
this.mux(() => { this.mux(() => {
const encoder = readMessage(this, new Uint8Array(data), false) const encoder = readMessage(this, new Uint8Array(data), false)
if (encoding.length(encoder) > 1) { if (encoding.length(encoder) > 1) {
bc.publish(this.url, encoding.toUint8Array(encoder)) bc.publish(this.bcChannel, encoding.toUint8Array(encoder))
} }
}) })
} }
@ -277,7 +278,7 @@ export class WebsocketProvider extends Observable {
} }
connectBc () { connectBc () {
if (!this.bcconnected) { if (!this.bcconnected) {
bc.subscribe(this.url, this._bcSubscriber) bc.subscribe(this.bcChannel, this._bcSubscriber)
this.bcconnected = true this.bcconnected = true
} }
// send sync step1 to bc // send sync step1 to bc
@ -286,21 +287,21 @@ export class WebsocketProvider extends Observable {
const encoderSync = encoding.createEncoder() const encoderSync = encoding.createEncoder()
encoding.writeVarUint(encoderSync, messageSync) encoding.writeVarUint(encoderSync, messageSync)
syncProtocol.writeSyncStep1(encoderSync, this.doc) syncProtocol.writeSyncStep1(encoderSync, this.doc)
bc.publish(this.url, encoding.toUint8Array(encoderSync)) bc.publish(this.bcChannel, encoding.toUint8Array(encoderSync))
// broadcast local state // broadcast local state
const encoderState = encoding.createEncoder() const encoderState = encoding.createEncoder()
encoding.writeVarUint(encoderState, messageSync) encoding.writeVarUint(encoderState, messageSync)
syncProtocol.writeSyncStep2(encoderState, this.doc) syncProtocol.writeSyncStep2(encoderState, this.doc)
bc.publish(this.url, encoding.toUint8Array(encoderState)) bc.publish(this.bcChannel, encoding.toUint8Array(encoderState))
// write queryAwareness // write queryAwareness
const encoderAwarenessQuery = encoding.createEncoder() const encoderAwarenessQuery = encoding.createEncoder()
encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness) encoding.writeVarUint(encoderAwarenessQuery, messageQueryAwareness)
bc.publish(this.url, encoding.toUint8Array(encoderAwarenessQuery)) bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessQuery))
// broadcast local awareness state // broadcast local awareness state
const encoderAwarenessState = encoding.createEncoder() const encoderAwarenessState = encoding.createEncoder()
encoding.writeVarUint(encoderAwarenessState, messageAwareness) encoding.writeVarUint(encoderAwarenessState, messageAwareness)
encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID])) encoding.writeVarUint8Array(encoderAwarenessState, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID]))
bc.publish(this.url, encoding.toUint8Array(encoderAwarenessState)) bc.publish(this.bcChannel, encoding.toUint8Array(encoderAwarenessState))
}) })
} }
disconnectBc () { disconnectBc () {
@ -310,7 +311,7 @@ export class WebsocketProvider extends Observable {
encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map())) encoding.writeVarUint8Array(encoder, awarenessProtocol.encodeAwarenessUpdate(this.awareness, [this.doc.clientID], new Map()))
broadcastMessage(this, encoding.toUint8Array(encoder)) broadcastMessage(this, encoding.toUint8Array(encoder))
if (this.bcconnected) { if (this.bcconnected) {
bc.unsubscribe(this.url, this._bcSubscriber) bc.unsubscribe(this.bcChannel, this._bcSubscriber)
this.bcconnected = false this.bcconnected = false
} }
} }