@@ -12,7 +12,7 @@ import * as decoding from 'lib0/decoding'
12
12
import * as syncProtocol from 'y-protocols/sync'
13
13
import * as authProtocol from 'y-protocols/auth'
14
14
import * as awarenessProtocol from 'y-protocols/awareness'
15
- import { Observable } from 'lib0/observable'
15
+ import { ObservableV2 } from 'lib0/observable'
16
16
import * as math from 'lib0/math'
17
17
import * as url from 'lib0/url'
18
18
import * as env from 'lib0/environment'
@@ -130,9 +130,11 @@ const readMessage = (provider, buf, emitSynced) => {
130
130
*
131
131
* @param {WebsocketProvider } provider
132
132
* @param {WebSocket } ws
133
+ * @param {CloseEvent | null } event
133
134
*/
134
- const closeWebsocketConnection = ( provider , ws ) => {
135
+ const closeWebsocketConnection = ( provider , ws , event ) => {
135
136
if ( ws === provider . ws ) {
137
+ provider . emit ( 'connection-close' , [ event , provider ] )
136
138
provider . ws = null
137
139
ws . close ( )
138
140
provider . wsconnecting = false
@@ -189,8 +191,7 @@ const setupWS = (provider) => {
189
191
provider . emit ( 'connection-error' , [ event , provider ] )
190
192
}
191
193
websocket . onclose = ( event ) => {
192
- provider . emit ( 'connection-close' , [ event , provider ] )
193
- closeWebsocketConnection ( provider , websocket )
194
+ closeWebsocketConnection ( provider , websocket , event )
194
195
}
195
196
websocket . onopen = ( ) => {
196
197
provider . wsLastMessageReceived = time . getUnixTime ( )
@@ -249,9 +250,9 @@ const broadcastMessage = (provider, buf) => {
249
250
* const doc = new Y.Doc()
250
251
* const provider = new WebsocketProvider('http://localhost:1234', 'my-document-name', doc)
251
252
*
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 } > }
253
254
*/
254
- export class WebsocketProvider extends Observable {
255
+ export class WebsocketProvider extends ObservableV2 {
255
256
/**
256
257
* @param {string } serverUrl
257
258
* @param {string } roomname
@@ -391,7 +392,7 @@ export class WebsocketProvider extends Observable {
391
392
) {
392
393
// no message received in a long time - not even your own awareness
393
394
// updates (which are updated every 15 seconds)
394
- closeWebsocketConnection ( this , /** @type {WebSocket } */ ( this . ws ) )
395
+ closeWebsocketConnection ( this , /** @type {WebSocket } */ ( this . ws ) , null )
395
396
}
396
397
} , messageReconnectTimeout / 10 ) )
397
398
if ( connect ) {
@@ -415,6 +416,7 @@ export class WebsocketProvider extends Observable {
415
416
set synced ( state ) {
416
417
if ( this . _synced !== state ) {
417
418
this . _synced = state
419
+ // @ts -ignore
418
420
this . emit ( 'synced' , [ state ] )
419
421
this . emit ( 'sync' , [ state ] )
420
422
}
@@ -498,7 +500,7 @@ export class WebsocketProvider extends Observable {
498
500
this . shouldConnect = false
499
501
this . disconnectBc ( )
500
502
if ( this . ws !== null ) {
501
- closeWebsocketConnection ( this , this . ws )
503
+ closeWebsocketConnection ( this , this . ws , null )
502
504
}
503
505
}
504
506
0 commit comments