Skip to content
Snippets Groups Projects
Commit ccc877b1 authored by Nicolas Pope's avatar Nicolas Pope
Browse files

Fix duplicate intervals

parent 92dd588e
No related branches found
No related tags found
1 merge request!2Generate statistics every second
Pipeline #57410 passed
......@@ -119,13 +119,14 @@ export class Peer {
}
const close = () => {
this.emit("disconnect", this);
this.status = kDisconnected;
Peer.removePeer(this);
this.emit("disconnect", this);
}
const error = (e) => {
console.error("Socket error: ", e);
Peer.removePeer(this);
this.sock.close();
this.status = kDisconnected;
}
......@@ -346,11 +347,15 @@ export class Peer {
/**
* Closes the socket
*/
close() {
async close() {
if (this.status === kDisconnected) return;
return new Promise(resolve => {
this.on("disconnect", resolve);
if(!isw3c(this.sock)){
this.sock.close();
}
this.status = kDisconnected;
});
}
getUuid(): string {
......@@ -361,7 +366,7 @@ export class Peer {
static addPeer(p: Peer) {
Peer.peers.set(p.string_id, p);
if (Peer.peers.size === 1) {
if (Peer.peers.size === 1 && !Peer.interval) {
Peer.interval = setInterval(() => {
for (const [id, peer] of Peer.peers) {
peer.updateStatistics();
......
......@@ -9,6 +9,7 @@ describe("Peer class", () => {
let clientPeer: Peer;
let serverPeer: Peer;
let wss: WebSocket.Server;
let conn: WebSocket;
beforeEach(async () => {
return new Promise((resolve) => {
......@@ -18,7 +19,7 @@ describe("Peer class", () => {
serverPeer = new Peer(ws, true);
});
const conn = new WebSocket('ws://127.0.0.1:9003');
conn = new WebSocket('ws://127.0.0.1:9003');
clientPeer = new Peer(conn);
clientPeer.on('connect', () => {
resolve(true);
......@@ -27,9 +28,9 @@ describe("Peer class", () => {
});
afterEach(async () => {
await clientPeer.close();
await serverPeer.close();
return new Promise((resolve) => {
clientPeer.close();
serverPeer.close();
wss.close(() => {
resolve(true);
});
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment