[mirotalksfu] - add Room Lock/Unlock
هذا الالتزام موجود في:
12
src/Room.js
12
src/Room.js
@@ -10,6 +10,7 @@ module.exports = class Room {
|
||||
this.worker = worker;
|
||||
this.router = null;
|
||||
this.io = io;
|
||||
this._isLocked = false;
|
||||
this.peers = new Map();
|
||||
this.createTheRouter();
|
||||
}
|
||||
@@ -187,6 +188,17 @@ module.exports = class Room {
|
||||
this.peers.get(socket_id).closeProducer(producer_id);
|
||||
}
|
||||
|
||||
// ####################################################
|
||||
// ROOM STATUS
|
||||
// ####################################################
|
||||
|
||||
isLocked() {
|
||||
return this._isLocked;
|
||||
}
|
||||
setLocked(status) {
|
||||
this._isLocked = status;
|
||||
}
|
||||
|
||||
// ####################################################
|
||||
// SENDER
|
||||
// ####################################################
|
||||
|
||||
@@ -203,16 +203,36 @@ io.on('connection', (socket) => {
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('join', (data, cb) => {
|
||||
log.debug('User joined', data);
|
||||
socket.on('roomAction', (action) => {
|
||||
switch (action) {
|
||||
case 'lock':
|
||||
roomList.get(socket.room_id).setLocked(true);
|
||||
break;
|
||||
case 'unlock':
|
||||
roomList.get(socket.room_id).setLocked(false);
|
||||
break;
|
||||
}
|
||||
log.debug('Room locked:', roomList.get(socket.room_id).isLocked());
|
||||
// send to all participants
|
||||
roomList.get(socket.room_id).broadCast(socket.id, 'roomAction', action);
|
||||
});
|
||||
|
||||
socket.on('join', (data, cb) => {
|
||||
if (!roomList.has(socket.room_id)) {
|
||||
return cb({
|
||||
error: 'Room does not exist',
|
||||
});
|
||||
}
|
||||
|
||||
log.debug('User joined', data);
|
||||
roomList.get(socket.room_id).addPeer(new Peer(socket.id, data));
|
||||
|
||||
if (roomList.get(socket.room_id).isLocked()) {
|
||||
log.debug('User rejected because room is locked');
|
||||
cb('isLocked');
|
||||
return;
|
||||
}
|
||||
|
||||
cb(roomList.get(socket.room_id).toJson());
|
||||
});
|
||||
|
||||
@@ -327,6 +347,10 @@ io.on('connection', (socket) => {
|
||||
log.debug('Disconnect', getPeerName());
|
||||
|
||||
roomList.get(socket.room_id).removePeer(socket.id);
|
||||
|
||||
if (roomList.get(socket.room_id).getPeers().size === 0 && roomList.get(socket.room_id).isLocked()) {
|
||||
roomList.get(socket.room_id).setLocked(false);
|
||||
}
|
||||
});
|
||||
|
||||
socket.on('exitRoom', async (_, callback) => {
|
||||
|
||||
المرجع في مشكلة جديدة
حظر مستخدم