From b1d6f5951e7d53c5f91c065cad0417ec0b5cb0fe Mon Sep 17 00:00:00 2001 From: M4GNV5 Date: Thu, 16 Jul 2015 21:51:10 +0200 Subject: [PATCH] closing socket if joining fails --- client/client.js | 11 +++++------ server.js | 4 ++++ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/client/client.js b/client/client.js index 4313b74..0e5e0ce 100644 --- a/client/client.js +++ b/client/client.js @@ -44,6 +44,7 @@ var ws var myNick = localStorageGet('my-nick') var myChannel = window.location.search.replace(/^\?/, '') var lastSent = "" +var wasConnected = false // Ping server every 50 seconds to retain WebSocket connection window.setInterval(function() { @@ -61,8 +62,6 @@ function join(channel) { ws = new WebSocket('ws://' + document.domain + ':6060') } - var wasConnected = false - ws.onopen = function() { if (!wasConnected) { myNick = prompt('Nickname:', myNick) @@ -71,16 +70,15 @@ function join(channel) { localStorageSet('my-nick', myNick) send({cmd: 'join', channel: channel, nick: myNick}) } - wasConnected = true } ws.onclose = function() { if (wasConnected) { pushMessage('!', "Server disconnected. Attempting to reconnect...", Date.now(), 'warn') + window.setTimeout(function() { + join(channel) + }, 2000) } - window.setTimeout(function() { - join(channel) - }, 2000) } ws.onmessage = function(message) { @@ -115,6 +113,7 @@ var COMMANDS = { nicks.forEach(function(nick) { userAdd(nick) }) + wasConnected = true pushMessage('*', "Users online: " + nicks.join(", "), Date.now(), 'info') }, onlineAdd: function(args) { diff --git a/server.js b/server.js index d8ca439..4ffbbae 100644 --- a/server.js +++ b/server.js @@ -104,6 +104,7 @@ var COMMANDS = { if (POLICE.frisk(getAddress(this), 3)) { send({cmd: 'warn', text: "You are joining channels too fast. Wait a moment and try again."}, this) + this.close() return } @@ -123,6 +124,7 @@ var COMMANDS = { nick = nick.trim() if (nick.toLowerCase() == config.admin.toLowerCase()) { send({cmd: 'warn', text: "Cannot impersonate the admin"}, this) + this.close() return } if (nick == config.password) { @@ -131,6 +133,7 @@ var COMMANDS = { } if (!nicknameValid(nick)) { send({cmd: 'warn', text: "Nickname invalid"}, this) + this.close() return } @@ -139,6 +142,7 @@ var COMMANDS = { if (client.channel === channel) { if (client.nick.toLowerCase() === nick.toLowerCase()) { send({cmd: 'warn', text: "Nickname taken"}, this) + this.close() return } }