| 298 | } |
| 299 | |
| 300 | private createSocket() { |
| 301 | const state = this.store.getState(); |
| 302 | const spaceId = state.space.activeId || state.share.spaceId; |
| 303 | const version = window['__initialization_data__'].version; |
| 304 | const socket = SocketIO(Url.WEBSOCKET_NAMESPACE, { |
| 305 | path: Url.ROOM_PATH, |
| 306 | transports: ['websocket'], |
| 307 | secure: true, |
| 308 | query: { |
| 309 | version, |
| 310 | spaceId, |
| 311 | }, |
| 312 | }); |
| 313 | socket.on('disconnect', (reason: any) => { |
| 314 | console.warn('! ' + 'socket disconnect from server'); |
| 315 | // Player.doTrigger(Events.app_error_logger, { error: new Error('socket disconnect reason: ' + reason) }); |
| 316 | |
| 317 | this.store.dispatch(StoreActions.setReconnecting(true)); |
| 318 | this.roomService.setConnected(false); |
| 319 | let count = 1; |
| 320 | |
| 321 | const interval = window.setInterval(async () => { |
| 322 | if (socket.connected) { |
| 323 | clearInterval(interval); |
| 324 | await this.roomService.watch(); |
| 325 | this.roomService.setConnected(true); |
| 326 | this.store.dispatch(StoreActions.setReconnecting(false)); |
| 327 | console.log('connected'); |
| 328 | return; |
| 329 | } |
| 330 | if (reason === 'io server disconnect') { |
| 331 | // the disconnection was initiated by the server, you need to reconnect manually |
| 332 | socket.connect(); |
| 333 | console.warn('! ' + `room attempt to reconnect ${count++} ...`); |
| 334 | } |
| 335 | }, RECONNECT_DELAY); |
| 336 | }); |
| 337 | |
| 338 | socket.on('connect', () => { |
| 339 | this.reportSocketError = true; |
| 340 | this.store.dispatch(StoreActions.setConnected(true)); |
| 341 | }); |
| 342 | |
| 343 | socket.on('connect_error', () => { |
| 344 | if (!this.reportSocketError) { |
| 345 | return; |
| 346 | } |
| 347 | this.reportSocketError = false; |
| 348 | // Player.doTrigger(Events.app_error_logger, { error: new Error('socket has happened some error: ' + JSON.stringify(error)) }); |
| 349 | }); |
| 350 | return socket; |
| 351 | } |
| 352 | |
| 353 | getCollaEngine(resourceId: string) { |
| 354 | return this.roomService.collaEngineMap.get(resourceId); |