Cleanup of listeners in Lobby if a user is promoted.
parent
cd5055c00e
commit
4910b2c10d
|
|
@ -1,7 +1,5 @@
|
||||||
const EventEmitter = require('events').EventEmitter;
|
const EventEmitter = require('events').EventEmitter;
|
||||||
const Logger = require('./Logger');
|
const Logger = require('./Logger');
|
||||||
const config = require('../config/config');
|
|
||||||
|
|
||||||
|
|
||||||
const logger = new Logger('Lobby');
|
const logger = new Logger('Lobby');
|
||||||
|
|
||||||
|
|
@ -76,8 +74,15 @@ class Lobby extends EventEmitter
|
||||||
|
|
||||||
if (peer)
|
if (peer)
|
||||||
{
|
{
|
||||||
this.emit('promotePeer', peer);
|
peer.socket.removeListener('request', peer.socketRequestHandler);
|
||||||
|
peer.removeListener('authenticationChanged', peer.authenticationHandler);
|
||||||
|
peer.removeListener('close', peer.closeHandler);
|
||||||
|
|
||||||
|
peer.socketRequestHandler = null;
|
||||||
|
peer.authenticationHandler = null;
|
||||||
|
peer.closeHandler = null;
|
||||||
|
|
||||||
|
this.emit('promotePeer', peer);
|
||||||
this._peers.delete(peerId);
|
this._peers.delete(peerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -89,18 +94,7 @@ class Lobby extends EventEmitter
|
||||||
if (this._closed)
|
if (this._closed)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
this._notification(peer.socket, 'enteredLobby');
|
peer.socketRequestHandler = (request, cb) =>
|
||||||
|
|
||||||
this._peers.set(peer.id, peer);
|
|
||||||
|
|
||||||
peer.on('authenticationChanged', () =>
|
|
||||||
{
|
|
||||||
logger.info('parkPeer() | authenticationChange [peer:"%s"]', peer.id);
|
|
||||||
|
|
||||||
peer.authenticated && this.emit('peerAuthenticated', peer);
|
|
||||||
});
|
|
||||||
|
|
||||||
peer.socket.on('request', (request, cb) =>
|
|
||||||
{
|
{
|
||||||
logger.debug(
|
logger.debug(
|
||||||
'Peer "request" event [method:"%s", peer:"%s"]',
|
'Peer "request" event [method:"%s", peer:"%s"]',
|
||||||
|
|
@ -116,9 +110,16 @@ class Lobby extends EventEmitter
|
||||||
|
|
||||||
cb(error);
|
cb(error);
|
||||||
});
|
});
|
||||||
});
|
};
|
||||||
|
|
||||||
peer.on('close', () =>
|
peer.authenticationHandler = () =>
|
||||||
|
{
|
||||||
|
logger.info('parkPeer() | authenticationChange [peer:"%s"]', peer.id);
|
||||||
|
|
||||||
|
peer.authenticated && this.emit('peerAuthenticated', peer);
|
||||||
|
};
|
||||||
|
|
||||||
|
peer.closeHandler = () =>
|
||||||
{
|
{
|
||||||
logger.debug('Peer "close" event [peer:"%s"]', peer.id);
|
logger.debug('Peer "close" event [peer:"%s"]', peer.id);
|
||||||
|
|
||||||
|
|
@ -131,7 +132,17 @@ class Lobby extends EventEmitter
|
||||||
|
|
||||||
if (this.checkEmpty())
|
if (this.checkEmpty())
|
||||||
this.emit('lobbyEmpty');
|
this.emit('lobbyEmpty');
|
||||||
});
|
};
|
||||||
|
|
||||||
|
this._notification(peer.socket, 'enteredLobby');
|
||||||
|
|
||||||
|
this._peers.set(peer.id, peer);
|
||||||
|
|
||||||
|
peer.on('authenticationChanged', peer.authenticationHandler);
|
||||||
|
|
||||||
|
peer.socket.on('request', peer.socketRequestHandler);
|
||||||
|
|
||||||
|
peer.on('close', peer.closeHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _handleSocketRequest(peer, request, cb)
|
async _handleSocketRequest(peer, request, cb)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue