From 83a51260c4ed40d675288bba8bb18bf05c0b144c Mon Sep 17 00:00:00 2001 From: Haythem Farhat Date: Mon, 14 Oct 2024 11:47:02 +0200 Subject: [PATCH] chore: handle network disconnect connect events (#386) --- packages/js/src/Modules/Verto/BaseSession.ts | 3 ++- packages/js/src/Modules/Verto/webrtc/Peer.ts | 13 +++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/js/src/Modules/Verto/BaseSession.ts b/packages/js/src/Modules/Verto/BaseSession.ts index a3eb1212..8bedcca8 100644 --- a/packages/js/src/Modules/Verto/BaseSession.ts +++ b/packages/js/src/Modules/Verto/BaseSession.ts @@ -365,10 +365,11 @@ export default abstract class BaseSession { } /** + * @private * Close and remove the current connection. * @return void */ - private _closeConnection() { + public _closeConnection() { this._idle = true; clearTimeout(this._keepAliveTimeout); if (this.connection) { diff --git a/packages/js/src/Modules/Verto/webrtc/Peer.ts b/packages/js/src/Modules/Verto/webrtc/Peer.ts index f3d6a33c..81d73839 100644 --- a/packages/js/src/Modules/Verto/webrtc/Peer.ts +++ b/packages/js/src/Modules/Verto/webrtc/Peer.ts @@ -194,8 +194,17 @@ export default class Peer { } if (connectionState === 'failed' || connectionState === 'disconnected') { - this.instance.restartIce(); - return this._session.onNetworkClose(); + const onConnectionOnline = () => { + this.instance.restartIce(); + this._session._closeConnection(); + this._session.connect(); + window.removeEventListener('online', onConnectionOnline); + }; + + if (navigator.onLine) { + return onConnectionOnline(); + } + window.addEventListener('online', onConnectionOnline); } };