Inital work on lobby.

This commit is contained in:
Håvar Aambø Fosstveit
2019-10-15 10:52:14 +02:00
parent 937f142c6e
commit 66a2becf63
7 changed files with 352 additions and 9 deletions
+46 -2
View File
@@ -2,6 +2,7 @@
const EventEmitter = require('events').EventEmitter;
const Logger = require('./Logger');
const Lobby = require('./Lobby');
const config = require('../config/config');
const logger = new Logger('Room');
@@ -54,6 +55,15 @@ class Room extends EventEmitter
// Locked flag.
this._locked = false;
this._lobby = new Lobby();
this._lobby.on('promotePeer', (peer) =>
{
logger.info('promotePeer() [peer:"%o"]', peer);
this._peerJoining({ ...peer });
});
this._chatHistory = [];
this._fileHistory = [];
@@ -118,6 +128,8 @@ class Room extends EventEmitter
this._closed = true;
this._lobby.close();
// Close the peers
if (this._peers)
{
@@ -165,11 +177,21 @@ class Room extends EventEmitter
}
else if (this._locked) // Don't allow connections to a locked room
{
this._notification(socket, 'roomLocked');
socket.disconnect(true);
this._lobby.parkPeer({ peerId, consume, socket });
this._peers.forEach((peer) =>
{
this._notification(peer.socket, 'parkedPeer', { peerId });
});
return;
}
this._peerJoining({ peerId, consume, socket });
}
_peerJoining({ peerId, consume, socket })
{
socket.join(this._roomId);
const peer = { id : peerId, socket : socket };
@@ -808,6 +830,28 @@ class Room extends EventEmitter
break;
}
case 'promotePeer':
{
const { peerId } = request.data;
this._lobby.promotePeer(peerId);
// Return no error
cb();
break;
}
case 'promoteAllPeers':
{
this._lobby.promoteAllPeers();
// Return no error
cb();
break;
}
case 'sendFile':
{
const { magnetUri } = request.data;