@@ -12,7 +12,7 @@ import * as decoding from 'lib0/decoding'
1212import * as syncProtocol from 'y-protocols/sync'
1313import * as authProtocol from 'y-protocols/auth'
1414import * as awarenessProtocol from 'y-protocols/awareness'
15- import { Observable } from 'lib0/observable'
15+ import { ObservableV2 } from 'lib0/observable'
1616import * as math from 'lib0/math'
1717import * as url from 'lib0/url'
1818import * as env from 'lib0/environment'
@@ -130,9 +130,11 @@ const readMessage = (provider, buf, emitSynced) => {
130130 *
131131 * @param {WebsocketProvider } provider
132132 * @param {WebSocket } ws
133+ * @param {CloseEvent | null } event
133134 */
134- const closeWebsocketConnection = ( provider , ws ) => {
135+ const closeWebsocketConnection = ( provider , ws , event ) => {
135136 if ( ws === provider . ws ) {
137+ provider . emit ( 'connection-close' , [ event , provider ] )
136138 provider . ws = null
137139 ws . close ( )
138140 provider . wsconnecting = false
@@ -189,8 +191,7 @@ const setupWS = (provider) => {
189191 provider . emit ( 'connection-error' , [ event , provider ] )
190192 }
191193 websocket . onclose = ( event ) => {
192- provider . emit ( 'connection-close' , [ event , provider ] )
193- closeWebsocketConnection ( provider , websocket )
194+ closeWebsocketConnection ( provider , websocket , event )
194195 }
195196 websocket . onopen = ( ) => {
196197 provider . wsLastMessageReceived = time . getUnixTime ( )
@@ -249,9 +250,9 @@ const broadcastMessage = (provider, buf) => {
249250 * const doc = new Y.Doc()
250251 * const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)
251252 *
252- * @extends {Observable<string > }
253+ * @extends {ObservableV2<{ 'connection-close': (event: CloseEvent | null, provider: WebsocketProvider) => any, 'status': (event: { status: 'connected' | 'disconnected' | 'connecting' }) => any, 'connection-error': (event: Event, provider: WebsocketProvider) => any, 'sync': (state: boolean) => any } > }
253254 */
254- export class WebsocketProvider extends Observable {
255+ export class WebsocketProvider extends ObservableV2 {
255256 /**
256257 * @param {string } serverUrl
257258 * @param {string } roomname
@@ -391,7 +392,7 @@ export class WebsocketProvider extends Observable {
391392 ) {
392393 // no message received in a long time - not even your own awareness
393394 // updates (which are updated every 15 seconds)
394- closeWebsocketConnection ( this , /** @type {WebSocket } */ ( this . ws ) )
395+ closeWebsocketConnection ( this , /** @type {WebSocket } */ ( this . ws ) , null )
395396 }
396397 } , messageReconnectTimeout / 10 ) )
397398 if ( connect ) {
@@ -415,6 +416,7 @@ export class WebsocketProvider extends Observable {
415416 set synced ( state ) {
416417 if ( this . _synced !== state ) {
417418 this . _synced = state
419+ // @ts -ignore
418420 this . emit ( 'synced' , [ state ] )
419421 this . emit ( 'sync' , [ state ] )
420422 }
@@ -498,7 +500,7 @@ export class WebsocketProvider extends Observable {
498500 this . shouldConnect = false
499501 this . disconnectBc ( )
500502 if ( this . ws !== null ) {
501- closeWebsocketConnection ( this , this . ws )
503+ closeWebsocketConnection ( this , this . ws , null )
502504 }
503505 }
504506
0 commit comments