Added lobby to server, still missing some signaling.

master
Håvar Aambø Fosstveit 2019-10-15 08:03:55 +02:00
parent 2e166ca2b2
commit 937f142c6e
1 changed files with 80 additions and 0 deletions

View File

@ -0,0 +1,80 @@
'use strict';
const EventEmitter = require('events').EventEmitter;
const Logger = require('./Logger');
const logger = new Logger('Lobby');
class Lobby extends EventEmitter
{
constructor()
{
logger.info('constructor()');
super();
this._peers = new Map();
}
close()
{
logger.info('close()');
// Close the peers
if (this._peers)
{
this._peers.forEach((peer) =>
{
if (peer.socket)
peer.socket.disconnect();
});
}
this._peers.clear();
}
peerList()
{
logger.info('peerList()');
return this._peers;
}
promoteAllPeers()
{
logger.info('promoteAllPeers()');
if (this._peers)
{
this._peers.forEach((peer) =>
{
if (peer.socket)
this.promotePeer(peer.peerId);
});
}
}
promotePeer(peerId)
{
logger.info('promotePeer() [peerId: %s]', peerId);
const peer = this._peers.get(peerId);
this._peers.delete(peerId);
this.emit('promotePeer', peer);
}
parkPeer({ peerId, consume, socket })
{
logger.info('parkPeer()');
const peer = { peerId, socket, consume };
socket.emit('notification', { method: 'enteredLobby', data: {} });
this._peers.set(peerId, peer);
}
}
module.exports = Lobby;