Added support for locking rooms

This commit is contained in:
Håvar Aambø Fosstveit
2019-02-15 12:23:05 +01:00
parent 4fd3c6c8b1
commit 1c5f90cff6
11 changed files with 331 additions and 108 deletions
+42
View File
@@ -25,6 +25,9 @@ class Room extends EventEmitter
// Closed flag.
this._closed = false;
// Locked flag.
this._locked = false;
this._chatHistory = [];
this._fileHistory = [];
@@ -102,6 +105,7 @@ class Room extends EventEmitter
{
logger.info('handleConnection() [peerName:"%s"]', peerName);
// This will allow reconnects to join despite lock
if (this._signalingPeers.has(peerName))
{
logger.warn(
@@ -114,6 +118,11 @@ class Room extends EventEmitter
signalingPeer.socket.disconnect();
this._signalingPeers.delete(peerName);
}
else if (this._locked) // Don't allow connections to a locked room
{
socket.emit('room-locked');
socket.disconnect(true);
}
const signalingPeer = { peerName : peerName, socket : socket };
@@ -127,6 +136,7 @@ class Room extends EventEmitter
this._signalingPeers.set(peerName, signalingPeer);
this._handleSignalingPeer(signalingPeer);
socket.emit('room-ready');
}
authCallback(data)
@@ -308,6 +318,38 @@ class Room extends EventEmitter
);
});
signalingPeer.socket.on('lock-room', (request, cb) =>
{
// Return no error
cb(null);
this._locked = true;
// Spread to others
signalingPeer.socket.broadcast.to(this._roomId).emit(
'lock-room',
{
peerName : signalingPeer.peerName
}
);
});
signalingPeer.socket.on('unlock-room', (request, cb) =>
{
// Return no error
cb(null);
this._locked = false;
// Spread to others
signalingPeer.socket.broadcast.to(this._roomId).emit(
'unlock-room',
{
peerName : signalingPeer.peerName
}
);
});
signalingPeer.socket.on('send-file', (request, cb) =>
{
// Return no error