[mirotalksfu] - Improve is presenter logic

هذا الالتزام موجود في:
Miroslav Pejic
2023-04-10 09:36:12 +02:00
الأصل 7e66fa6253
التزام bf953c3448
4 ملفات معدلة مع 65 إضافات و5 حذوفات

عرض الملف

@@ -8,6 +8,7 @@ module.exports = class Peer {
this.id = socket_id;
this.peer_info = data.peer_info;
this.peer_name = data.peer_info.peer_name;
this.peer_presenter = data.peer_info.peer_presenter;
this.peer_audio = data.peer_info.peer_audio;
this.peer_video = data.peer_info.peer_video;
this.peer_video_privacy = data.peer_video_privacy;
@@ -50,6 +51,12 @@ module.exports = class Peer {
this.peer_info.peer_video_privacy = data.status;
this.peer_video_privacy = data.status;
break;
case 'presenter':
this.peer_info.peer_presenter = data.status;
this.peer_presenter = data.status;
break;
default:
break;
}
}

عرض الملف

@@ -144,6 +144,8 @@ let authHost; // Authenticated IP by Login
let roomList = new Map();
let presenters = {}; // collect presenters grp by roomId
// All mediasoup workers
let workers = [];
let nextMediasoupWorkerIdx = 0;
@@ -728,6 +730,38 @@ function startServer() {
return cb('isLobby');
}
if (!(socket.room_id in presenters)) presenters[socket.room_id] = {};
const peer_name = roomList.get(socket.room_id).getPeers()?.get(socket.id)?.peer_info?.peer_name;
const peer_uuid = roomList.get(socket.room_id).getPeers()?.get(socket.id)?.peer_info?.peer_uuid;
if (Object.keys(presenters[socket.room_id]).length === 0) {
presenters[socket.room_id] = {
peer_name: peer_name,
peer_uuid: peer_uuid,
is_presenter: true,
};
}
log.debug('[Join] - Connected presenters grp by roomId', presenters);
const isPresenter =
Object.keys(presenters[socket.room_id]).length > 1 &&
presenters[socket.room_id]['peer_name'] == peer_name &&
presenters[socket.room_id]['peer_uuid'] == peer_uuid;
roomList
.get(socket.room_id)
.getPeers()
.get(socket.id)
.updatePeerInfo({ type: 'presenter', status: isPresenter });
log.debug('[Join] - Is presenter', {
roomId: socket.room_id,
peer_name: peer_name,
peer_presenter: isPresenter,
});
cb(roomList.get(socket.room_id).toJson());
});
@@ -904,6 +938,8 @@ function startServer() {
if (roomList.get(socket.room_id).isLobbyEnabled()) {
roomList.get(socket.room_id).setLobbyEnabled(false);
}
delete presenters[socket.room_id];
log.debug('Disconnect - current presenters grouped by roomId', presenters);
}
roomList.get(socket.room_id).broadCast(socket.id, 'removeMe', removeMeData());