|
@@ -111,6 +111,7 @@ class SnapdropServer {
|
|
|
|
|
|
_send(peer, message) {
|
|
_send(peer, message) {
|
|
if (!peer) return console.error('undefined peer');
|
|
if (!peer) return console.error('undefined peer');
|
|
|
|
+ if (this._wss.readyState !== this._wss.OPEN) return console.error('Socket is closed');
|
|
message = JSON.stringify(message);
|
|
message = JSON.stringify(message);
|
|
peer.socket.send(message, error => {
|
|
peer.socket.send(message, error => {
|
|
if (error) this._leaveRoom(peer);
|
|
if (error) this._leaveRoom(peer);
|
|
@@ -119,17 +120,16 @@ class SnapdropServer {
|
|
|
|
|
|
_keepAlive(peer) {
|
|
_keepAlive(peer) {
|
|
var timeout = 10000;
|
|
var timeout = 10000;
|
|
- // console.log(Date.now() - peer.lastBeat);
|
|
|
|
|
|
+ if (!peer.lastBeat) {
|
|
|
|
+ peer.lastBeat = Date.now();
|
|
|
|
+ }
|
|
if (Date.now() - peer.lastBeat > 2 * timeout) {
|
|
if (Date.now() - peer.lastBeat > 2 * timeout) {
|
|
this._leaveRoom(peer);
|
|
this._leaveRoom(peer);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- if (this._wss.readyState == this._wss.OPEN) {
|
|
|
|
- this._send(peer, {
|
|
|
|
- type: 'ping'
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ this._send(peer, { type: 'ping' });
|
|
|
|
+
|
|
this._cancelKeepAlive(peer);
|
|
this._cancelKeepAlive(peer);
|
|
peer.timerId = setTimeout(() => this._keepAlive(peer), timeout);
|
|
peer.timerId = setTimeout(() => this._keepAlive(peer), timeout);
|
|
}
|
|
}
|
|
@@ -137,6 +137,7 @@ class SnapdropServer {
|
|
_cancelKeepAlive(peer) {
|
|
_cancelKeepAlive(peer) {
|
|
if (peer.timerId) {
|
|
if (peer.timerId) {
|
|
clearTimeout(peer.timerId);
|
|
clearTimeout(peer.timerId);
|
|
|
|
+ peer.lastBeat = null;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|