[mirotalksfu] - refactoring, update dep

هذا الالتزام موجود في:
Miroslav Pejic
2025-01-05 16:41:42 +01:00
الأصل 8efb33867d
التزام 0447694e0a
4 ملفات معدلة مع 25 إضافات و62 حذوفات

عرض الملف

@@ -55,7 +55,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.6.80
* @version 1.6.81
*
*/
@@ -2790,49 +2790,19 @@ function startServer() {
});
socket.on('disconnect', async () => {
if (!roomExists(socket)) return;
const { room, peer } = getRoomAndPeer(socket);
const { peer_name, peer_uuid } = peer || {};
const isPresenter = await isPeerPresenter(socket.room_id, socket.id, peer_name, peer_uuid);
log.debug('[Disconnect] - peer name', peer_name);
room.removePeer(socket.id);
if (room.getPeers().size === 0) {
//
stopRTMPActiveStreams(isPresenter, room);
roomList.delete(socket.room_id);
delete presenters[socket.room_id];
log.info('[Disconnect] - Last peer - current presenters grouped by roomId', presenters);
const activeRooms = getActiveRooms();
log.info('[Disconnect] - Last peer - current active rooms', activeRooms);
const activeStreams = getRTMPActiveStreams();
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;
await handleRoomExit('disconnect', socket, true);
});
socket.on('exitRoom', async (_, callback) => {
await handleRoomExit('exitRoom', socket, false, callback);
});
// common
async function handleRoomExit(event, socket, broadcast = false, callback = null) {
if (!roomExists(socket)) {
return callback({
error: 'Not currently in a room',
});
if (callback) callback({ error: 'Room not found' });
return;
}
const { room, peer } = getRoomAndPeer(socket);
@@ -2841,39 +2811,32 @@ function startServer() {
const isPresenter = await isPeerPresenter(socket.room_id, socket.id, peer_name, peer_uuid);
log.debug('Exit room', peer_name);
room.removePeer(socket.id);
room.broadCast(socket.id, 'removeMe', removeMeData(room, peer_name, isPresenter));
if (broadcast) room.broadCast(socket.id, 'removeMe', removeMeData(room, peer_name, isPresenter));
log.debug('[Room Exit] ----------->', { event: event, peer_name: peer_name, isPresenter: isPresenter });
if (room.getPeers().size === 0) {
//
stopRTMPActiveStreams(isPresenter, room);
roomList.delete(socket.room_id);
delete presenters[socket.room_id];
log.info('[REMOVE ME] - Last peer - current presenters grouped by roomId', presenters);
log.info('[Room Exit] - Last peer - current presenters grouped by roomId', presenters);
const activeRooms = getActiveRooms();
log.info('[Room Exit] - Current active rooms:', getActiveRooms());
log.info('[REMOVE ME] - Last peer - current active rooms', activeRooms);
const activeStreams = getRTMPActiveStreams();
log.info('[REMOVE ME] - Last peer - current active RTMP streams', activeStreams);
log.info('[Room Exit] - Current active RTMP streams:', getRTMPActiveStreams());
}
socket.room_id = null;
if (isPresenter) removeIP(socket);
callback('Successfully exited room');
});
// common
if (callback) callback('Successfully exited room');
}
function getRoomAndPeer(socket) {
const room = getRoom(socket);