[mirotalksfu] - improvements

هذا الالتزام موجود في:
Miroslav Pejic
2025-06-27 23:45:57 +02:00
الأصل 190e1a1c60
التزام 3cc8448221
7 ملفات معدلة مع 93 إضافات و41 حذوفات

عرض الملف

@@ -141,33 +141,6 @@ module.exports = class Peer {
return true;
}
close() {
this.transports.forEach((transport, transport_id) => {
try {
transport.close();
this.delTransport(transport_id);
log.debug('Closed and deleted peer transport', {
transportInternal: transport.internal,
transport_closed: transport.closed,
});
} catch (error) {
log.warn(`Error closing transport with ID ${transport_id}`, error.message);
}
});
const peerTransports = this.getTransports();
const peerProducers = this.getProducers();
const peerConsumers = this.getConsumers();
log.debug('CLOSE PEER - CHECK TRANSPORTS | PRODUCERS | CONSUMERS', {
peer_id: this.id,
peer_name: this.peer_name,
peerTransports: peerTransports,
peerProducers: peerProducers,
peerConsumers: peerConsumers,
});
}
// ####################################################
// PRODUCER
// ####################################################
@@ -252,7 +225,9 @@ module.exports = class Peer {
const producer = this.getProducer(producer_id);
try {
producer.close();
if (!producer.closed) {
producer.close();
}
log.debug('Producer closed successfully', {
producer_id: producer.id,
@@ -272,6 +247,7 @@ module.exports = class Peer {
log.debug('Producer removed from peer', {
producer_id: producer.id,
producer_closed: producer.closed,
peer_name: this.peer_name,
});
}
@@ -382,7 +358,9 @@ module.exports = class Peer {
const consumer = this.getConsumer(consumer_id);
try {
consumer.close();
if (!consumer.closed) {
consumer.close();
}
log.debug('Consumer closed successfully', {
consumer_id: consumer.id,
@@ -401,7 +379,75 @@ module.exports = class Peer {
log.debug('Consumer removed from peer', {
consumer_id: consumer.id,
consumer_closed: consumer.closed,
peer_name: this.peer_name,
});
}
// ####################################################
// CLOSE PEER
// ####################################################
close() {
log.info('Starting peer cleanup', {
peer_id: this.id,
peer_name: this.peer_name,
transports: this.transports.size,
producers: this.producers.size,
consumers: this.consumers.size,
});
// Close all consumers first
for (const [consumer_id, consumer] of this.consumers.entries()) {
try {
if (!consumer.closed) {
consumer.close();
}
} catch (error) {
log.warn('Error closing consumer during peer cleanup', {
consumer_id,
error: error.message,
});
}
}
this.consumers.clear();
// Close all producers
for (const [producer_id, producer] of this.producers.entries()) {
try {
if (!producer.closed) {
producer.close();
}
} catch (error) {
log.warn('Error closing producer during peer cleanup', {
producer_id,
error: error.message,
});
}
}
this.producers.clear();
// Close all transports
for (const [transport_id, transport] of this.transports.entries()) {
try {
if (!transport.closed) {
transport.close();
}
} catch (error) {
log.warn('Error closing transport during peer cleanup', {
transport_id,
error: error.message,
});
}
}
this.transports.clear();
log.info('Peer cleanup completed successfully', {
peer_id: this.id,
peer_name: this.peer_name,
transports: this.transports.size,
producers: this.producers.size,
consumers: this.consumers.size,
});
}
};

عرض الملف

@@ -677,12 +677,16 @@ module.exports = class Room {
setTimeout(() => {
if (transport.iceState === 'disconnected') {
log.warn(`Closing transport ${transport.id} due to prolonged ICE disconnection`);
transport.close();
if (!transport.closed) {
transport.close();
}
}
}, iceConsentTimeout * 1000); // Wait iceConsentTimeout seconds before closing
} else if (iceState === 'closed') {
log.warn(`ICE state closed for transport ${transport.id}`);
transport.close();
if (!transport.closed) {
transport.close();
}
}
});
@@ -701,7 +705,9 @@ module.exports = class Room {
transport_id: id,
dtlsState: dtlsState,
});
transport.close();
if (!transport.closed) {
transport.close();
}
}
});

عرض الملف

@@ -64,7 +64,7 @@ dev 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.8.69
* @version 1.8.70
*
*/
@@ -3270,6 +3270,8 @@ function startServer() {
room.removePeer(socket.id);
room.broadCast(socket.id, 'removeMe', removeMeData(room, peer_name, isPresenter));
if (room.getPeersCount() === 0) {
//
stopRTMPActiveStreams(isPresenter, room);
@@ -3289,8 +3291,6 @@ function startServer() {
log.info('[Disconnect] - Last peer - current active RTMP streams', activeStreams);
}
room.broadCast(socket.id, 'removeMe', removeMeData(room, peer_name, isPresenter));
if (isPresenter) removeIP(socket);
socket.room_id = null;
@@ -3424,7 +3424,7 @@ function startServer() {
peer_counts: peerCounts,
isPresenter: isPresenter,
};
log.debug('[REMOVE ME DATA]', data);
log.debug('Peer removed from the room', data);
return data;
}
});