[mirotalksfu] - refactoring, update dep

هذا الالتزام موجود في:
Miroslav Pejic
2024-03-20 14:13:37 +01:00
الأصل 1ba6967e2b
التزام fa30a90f94
4 ملفات معدلة مع 58 إضافات و30 حذوفات

عرض الملف

@@ -192,6 +192,23 @@ module.exports = class Room {
this.peers.set(peer.id, peer);
}
getPeer(socket_id) {
//
if (!this.peers.has(socket_id)) {
log.error('---> Peer not found for socket ID', socket_id);
return null;
}
const peer = this.peers.get(socket_id);
if (!peer || typeof peer !== 'object') {
log.error('---> Peer object not found for socket ID', socket_id);
return null;
}
return peer;
}
getPeers() {
return this.peers;
}
@@ -217,9 +234,12 @@ module.exports = class Room {
}
async removePeer(socket_id) {
if (!this.peers.has(socket_id)) return;
const peer = this.peers.get(socket_id);
const peer = this.getPeer(socket_id);
if (!peer || typeof peer !== 'object') {
return;
}
const { id, peer_name } = peer;
@@ -245,9 +265,6 @@ module.exports = class Room {
// ####################################################
async createWebRtcTransport(socket_id) {
if (!this.peers.has(socket_id)) {
return this.callback(`[Room|createWebRtcTransport] Peer with socket ID ${socket_id} not found`);
}
const { maxIncomingBitrate, initialAvailableOutgoingBitrate, listenInfos } = this.webRtcTransport;
@@ -276,9 +293,13 @@ module.exports = class Room {
}
}
const peer = this.peers.get(socket_id);
const peer = this.getPeer(socket_id);
const { peer_name = 'undefined' } = peer;
if (!peer || typeof peer !== 'object') {
return this.callback(`[Room|createWebRtcTransport] Peer object not found for socket ID: ${socket_id}`);
}
const { peer_name } = peer;
transport.on('icestatechange', (iceState) => {
if (iceState === 'disconnected' || iceState === 'closed') {
@@ -287,6 +308,7 @@ module.exports = class Room {
iceState: iceState,
});
transport.close();
this.removePeer(peer.id);
}
});
@@ -304,6 +326,7 @@ module.exports = class Room {
dtlsState: dtlsState,
});
transport.close();
this.removePeer(peer.id);
}
});
@@ -329,11 +352,11 @@ module.exports = class Room {
return this.callback('[Room|connectPeerTransport] Invalid input parameters');
}
if (!this.peers.has(socket_id)) {
return this.callback(`[Room|connectPeerTransport] Peer with socket ID ${socket_id} not found`);
}
const peer = this.getPeer(socket_id);
const peer = this.peers.get(socket_id);
if (!peer || typeof peer !== 'object') {
return this.callback(`[Room|connectPeerTransport] Peer object not found for socket ID: ${socket_id}`);
}
const connectTransport = await peer.connectTransport(transport_id, dtlsParameters);
@@ -358,11 +381,11 @@ module.exports = class Room {
return this.callback('[Room|produce] Invalid input parameters');
}
if (!this.peers.has(socket_id)) {
return this.callback(`[Room|produce] Peer with ID: ${socket_id} not found`);
}
const peer = this.getPeer(socket_id);
const peer = this.peers.get(socket_id);
if (!peer || typeof peer !== 'object') {
return this.callback(`[Room|produce] Peer object not found for socket ID: ${socket_id}`);
}
const peerProducer = await peer.createProducer(producerTransportId, rtpParameters, kind, type);
@@ -372,7 +395,7 @@ module.exports = class Room {
const { id } = peerProducer;
const { peer_name = 'undefined', peer_info = {} } = peer;
const { peer_name, peer_info } = peer;
this.broadCast(socket_id, 'newProducers', [
{
@@ -406,15 +429,12 @@ module.exports = class Room {
return this.callback(`[Room|consume] Room router cannot consume producer_id: '${producer_id}'`);
}
if (!this.peers.has(socket_id)) {
log.warn('Peer not found for socket ID', socket_id);
return this.callback(`[Room|consume] Peer with ID: ${socket_id} not found`);
const peer = this.getPeer(socket_id);
if (!peer || typeof peer !== 'object') {
return this.callback(`[Room|consume] Peer object not found for socket ID: ${socket_id}`);
}
const peer = this.peers.get(socket_id);
const { peer_name = 'undefined' } = peer;
const peerConsumer = await peer.createConsumer(consumer_transport_id, producer_id, rtpCapabilities);
if (!peerConsumer || !peerConsumer.consumer || !peerConsumer.params) {
@@ -426,6 +446,8 @@ module.exports = class Room {
const { id, kind } = consumer;
const { peer_name } = peer;
consumer.on('producerclose', () => {
log.debug('Consumer closed due to producerclose event', {
peer_name: peer_name,
@@ -448,11 +470,17 @@ module.exports = class Room {
}
closeProducer(socket_id, producer_id) {
if (!socket_id || !producer_id || !this.peers.has(socket_id)) return;
if (!socket_id || !producer_id) return;
const peer = this.peers.get(socket_id);
const peer = this.getPeer(socket_id);
if (!peer || typeof peer !== 'object') {
return;
}
peer.closeProducer(producer_id);
log.debug('Producer closed', producer_id);
}
// ####################################################

عرض الملف

@@ -41,7 +41,7 @@ dependencies: {
* @license For commercial or closed source, contact us at license.mirotalk@gmail.com or purchase directly via CodeCanyon
* @license CodeCanyon: https://codecanyon.net/item/mirotalk-sfu-webrtc-realtime-video-conferences/40769970
* @author Miroslav Pejic - miroslav.pejic.85@gmail.com
* @version 1.3.97
* @version 1.3.98
*
*/
@@ -1700,7 +1700,7 @@ function startServer() {
log.debug('[Disconnect] - peer name', peerName);
room.removePeer(socket.id);
// room.removePeer(socket.id); // handled on WebRtcTransport - transport.close()
if (room.getPeers().size === 0) {
//