diff --git a/client/scripts/network.js b/client/scripts/network.js index c986092..90ae29e 100644 --- a/client/scripts/network.js +++ b/client/scripts/network.js @@ -4,6 +4,8 @@ class ServerConnection { this._connect(); Events.on('beforeunload', e => this._disconnect(), false); Events.on('pagehide', e => this._disconnect(), false); + document.addEventListener('visibilitychange', e => this._onVisibilityChange()); + } _connect() { @@ -71,6 +73,11 @@ class ServerConnection { clearTimeout(this._reconnectTimer); this._reconnectTimer = setTimeout(_ => this._connect(), 5000); } + + _onVisibilityChange() { + if (document.hidden) return; + this._connect(); + } } class Peer { @@ -296,8 +303,13 @@ class RTCPeer extends Peer { _onConnectionStateChange(e) { console.log('RTC: state changed:', this._peer.connectionState); switch (this._peer.connectionState) { - case 'disconnected': this._onChannelClosed(); - break; + case 'disconnected': + this._onChannelClosed(); + break; + case 'failed': + this._peer = null; + this._onChannelClosed(); + break; } }