fix(music-together): Removing a connection on error

This commit is contained in:
JellyBrick
2025-05-12 01:46:14 +09:00
parent 6d3ac985b2
commit dfa427f2ed

View File

@ -1,4 +1,4 @@
import { DataConnection, Peer, PeerErrorType } from 'peerjs';
import { DataConnection, Peer, PeerError, PeerErrorType } from 'peerjs';
import delay from 'delay';
import type { Permission, Profile, VideoData } from './types';
@ -89,8 +89,11 @@ export class Connection {
listener({ type: 'CONNECTION_CLOSED', payload: null }, null);
}
this.listeners = [];
this.connectionListeners.forEach((listener) => listener());
this.connectionListeners = [];
this.connections = {};
this.peer.disconnect();
this.peer.destroy();
});
@ -207,18 +210,26 @@ export class Connection {
});
});
const onClose = (err?: Error) => {
if (err) reject(err);
delete this.connections[conn.connectionId];
this.connectionListeners.forEach((listener) => listener(conn));
const onClose = (
err?: PeerError<
| 'not-open-yet'
| 'message-too-big'
| 'negotiation-failed'
| 'connection-closed'
>,
) => {
if (conn.open) {
conn.close({
flush: true,
});
}
delete this.connections[conn.connectionId];
this.connectionListeners.forEach((listener) => listener(conn));
if (err) {
reject(err);
}
};
conn.on('error', onClose);
conn.on('close', onClose);