diff --git a/lib/signaling.ts b/lib/signaling.ts index d30dedf..5416663 100644 --- a/lib/signaling.ts +++ b/lib/signaling.ts @@ -25,6 +25,8 @@ export default class Signaling extends EventEmitter { private readonly requests: Map = new Map() + private pingInterval?: ReturnType + constructor (private readonly network: Network, peers: Map, url: string) { super() @@ -36,7 +38,7 @@ export default class Signaling extends EventEmitter { // Send a ping every 5 seconds to keep the connection alive, // and to detect when the connection is lost. - setInterval(() => { + this.pingInterval = setInterval(() => { this.ping() }, 5000) } @@ -122,6 +124,10 @@ export default class Signaling extends EventEmitter { } close (): void { + if (this.pingInterval !== undefined) { + clearInterval(this.pingInterval) + this.pingInterval = undefined + } this.ws.close() }