Further work on sessions and authentication
This commit is contained in:
+50
-2
@@ -34,6 +34,32 @@ class Lobby extends EventEmitter
|
||||
this._peers = {};
|
||||
}
|
||||
|
||||
authCallback(data, roomLocked)
|
||||
{
|
||||
logger.debug('authCallback() | [data:"%o", roomLocked:"%s"]', data, roomLocked);
|
||||
|
||||
const {
|
||||
peerId,
|
||||
displayName,
|
||||
picture
|
||||
} = data;
|
||||
|
||||
const peer = this._peers[peerId];
|
||||
|
||||
if (peer)
|
||||
{
|
||||
this._notification(peer.socket, 'auth', {
|
||||
displayName : displayName,
|
||||
picture : picture
|
||||
});
|
||||
|
||||
if (!roomLocked)
|
||||
{
|
||||
this.promotePeer(peerId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
peerList()
|
||||
{
|
||||
logger.info('peerList()');
|
||||
@@ -41,6 +67,11 @@ class Lobby extends EventEmitter
|
||||
return Object.values(this._peers).map((peer) => ({ peerId: peer.peerId, displayName: peer.displayName }));
|
||||
}
|
||||
|
||||
hasPeer(peerId)
|
||||
{
|
||||
return Boolean(this._peers[peerId]);
|
||||
}
|
||||
|
||||
promoteAllPeers()
|
||||
{
|
||||
logger.info('promoteAllPeers()');
|
||||
@@ -58,9 +89,12 @@ class Lobby extends EventEmitter
|
||||
|
||||
const peer = this._peers[peerId];
|
||||
|
||||
this.emit('promotePeer', peer);
|
||||
if (peer)
|
||||
{
|
||||
this.emit('promotePeer', peer);
|
||||
|
||||
delete this._peers[peerId];
|
||||
delete this._peers[peerId];
|
||||
}
|
||||
}
|
||||
|
||||
parkPeer({ peerId, consume, socket })
|
||||
@@ -119,6 +153,20 @@ class Lobby extends EventEmitter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_notification(socket, method, data = {}, broadcast = false)
|
||||
{
|
||||
if (broadcast)
|
||||
{
|
||||
socket.broadcast.to(this._roomId).emit(
|
||||
'notification', { method, data }
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
socket.emit('notification', { method, data });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Lobby;
|
||||
@@ -260,6 +260,10 @@ class Room extends EventEmitter
|
||||
picture : picture
|
||||
});
|
||||
}
|
||||
else if (this._lobby.hasPeer(peerId))
|
||||
{
|
||||
this._lobby.authCallback(data, this._locked);
|
||||
}
|
||||
}
|
||||
|
||||
_handlePeer({ peer, consume })
|
||||
|
||||
Reference in New Issue
Block a user