[mirotalksfu] - improvements
هذا الالتزام موجود في:
104
app/src/Peer.js
104
app/src/Peer.js
@@ -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;
|
||||
}
|
||||
});
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم