Skip to content

Commit

Permalink
Fix events being emitted multiple times
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewda committed Aug 16, 2016
1 parent 97e73a7 commit df4949a
Showing 1 changed file with 41 additions and 38 deletions.
79 changes: 41 additions & 38 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ function Livescore(options) {
self.port = options.port || PORT;

self.socket = io(self.url + ':' + self.port);
self.reconnect = false;

self.time = 0;
self.map;
Expand All @@ -35,6 +34,8 @@ function Livescore(options) {
self.kills = 0;
self.knifeKills = 0;

self._lastLog;

self.options = {};

self.options[Livescore.Enums.EOption['ROUND_TIME']] = options.roundTime || 115; // 105 before update
Expand Down Expand Up @@ -99,13 +100,12 @@ Livescore.prototype.getTime = function(callback) {
};

Livescore.prototype._onConnect = function() {
if (!self.reconnect) {
if (!self.connected) {
self.connected = true;

self.socket.on('log', self._onLog);
self.socket.on('scoreboard', self._onScoreboard);
}

if (!self.connected) {
self.connected = true;
self.emit('connected');
}

Expand All @@ -115,51 +115,54 @@ Livescore.prototype._onConnect = function() {
};

Livescore.prototype._onReconnect = function() {
self.reconnect = true;
self.socket.emit('readyForMatch', self.listid);
};

Livescore.prototype._onLog = function(logs) {
try {
logs = JSON.parse(logs).log.reverse();

self.emit('log', logs);
} catch (err) {
logs = undefined;
logs = null;

self.emit('debug', err);
}

self.getPlayers(function(players) {
if (Object.keys(players).length && logs) {
logs.forEach(function(log) {
var event;
for (event in log) {
self.emit('debug', 'received event: ' + event);

switch (event) {
case 'Kill':
case 'Assist':
case 'BombPlanted':
case 'BombDefused':
case 'RoundStart':
case 'RoundEnd':
case 'PlayerJoin':
case 'PlayerQuit':
case 'MapChange':
case 'MatchStarted':
case 'Restart':
case 'Suicide':
self['_on' + event](log[event]);
break;
default:
self.emit('debug', 'unrecognized event: ' + event);
break;
if (logs && logs !== self._lastLog) {
self.emit('log', logs);

self.getPlayers(function(players) {
if (Object.keys(players).length && logs) {
logs.forEach(function(log) {
var event;
for (event in log) {
self.emit('debug', 'received event: ' + event);

switch (event) {
case 'Kill':
case 'Assist':
case 'BombPlanted':
case 'BombDefused':
case 'RoundStart':
case 'RoundEnd':
case 'PlayerJoin':
case 'PlayerQuit':
case 'MapChange':
case 'MatchStarted':
case 'Restart':
case 'Suicide':
self['_on' + event](log[event]);
break;
default:
self.emit('debug', 'unrecognized event: ' + event);
break;
}
}
}
});
}
});
});
}
});

self._lastLog = logs;
}
};

Livescore.prototype._onScoreboard = function(event) {
Expand Down

0 comments on commit df4949a

Please sign in to comment.