From e3e3e0dde9bd3fa29573f4f6ed7c0c8c4ea8141d Mon Sep 17 00:00:00 2001 From: Akkadius Date: Wed, 6 Sep 2017 01:49:07 -0500 Subject: [PATCH] Clean up websockets - refactor code and add reconnection capability --- public/assets/js/glass-pages/dhcp-logs.js | 47 +----------------- public/assets/js/glass-websockets.js | 58 +++++++++++++++++++++++ public/templates/index.html | 3 +- 3 files changed, 60 insertions(+), 48 deletions(-) create mode 100644 public/assets/js/glass-websockets.js diff --git a/public/assets/js/glass-pages/dhcp-logs.js b/public/assets/js/glass-pages/dhcp-logs.js index d5d7a02..97e7f72 100644 --- a/public/assets/js/glass-pages/dhcp-logs.js +++ b/public/assets/js/glass-pages/dhcp-logs.js @@ -4,6 +4,7 @@ function log_action (action){ socket.send(JSON.stringify({"event_unsubscribe": "dhcp_log_subscription"})); break; case "start": + console.log('start readystate is ' + socket.readyState); socket.send(JSON.stringify({"event_subscription": "dhcp_log_subscription"})); break; case "clear": @@ -36,52 +37,6 @@ function format_am_pm(date) { return am_pm; } -var killed_connection = 0; - -if(typeof socket === "undefined") { - var socket = new WebSocket("ws://" + window.location.hostname + ":8080"); - - socket.onopen = function (event) { - console.log("socket is opened"); - console.log("[Subscription] subscribing to dhcp log listen "); - }; - - socket.onmessage = function (event) { - if(killed_connection) - return false; - - if(!document.getElementById("dhcp_log")){ - console.log("[WS] DHCP Log unsubscribed"); - socket.send(JSON.stringify({"event_unsubscribe": "dhcp_log_subscription"})); - killed_connection = 1; - return false; - } - - if(document.getElementById("grep_fitler").value){ - var matcher = new RegExp(document.getElementById("grep_fitler").value, "i"); - var found = matcher.test(event.data); - if(!found){ - return false; - } - } - - var session = editor.session; - session.insert({ - row: session.getLength(), - column: 0 - }, "\n" + event.data); - - if(session.getLength() >= 50000){ - /* If we get over 500,000 lines lets clear the editor */ - editor.setValue(""); - } - - var row = editor.session.getLength() - 1; - var column = editor.session.getLine(row).length; // or simply Infinity - editor.gotoLine(row + 1, column); - }; -} - $('#dhcp_log').height($(window).height() * 0.6); var editor = ace.edit("dhcp_log"); diff --git a/public/assets/js/glass-websockets.js b/public/assets/js/glass-websockets.js new file mode 100644 index 0000000..751f933 --- /dev/null +++ b/public/assets/js/glass-websockets.js @@ -0,0 +1,58 @@ +function check_websocket_connection () { + if(socket.readyState == 3) { + connect_websocket(); + console.log("[Websocket] Connection lost... reconnecting..."); + } +} + +function connect_websocket() { + var killed_connection = 0; + + delete socket; + socket = new WebSocket("ws://" + window.location.hostname + ":8080"); + + socket.onopen = function (event) { + console.log("[Websocket] socket is opened - readystate is " + socket.readyState); + }; + + socket.onmessage = function (event) { + if(killed_connection) + return false; + + if(!document.getElementById("dhcp_log")){ + console.log("[Websocket] DHCP Log unsubscribed"); + socket.send(JSON.stringify({"event_unsubscribe": "dhcp_log_subscription"})); + killed_connection = 1; + return false; + } + + if(document.getElementById("grep_fitler").value){ + var matcher = new RegExp(document.getElementById("grep_fitler").value, "i"); + var found = matcher.test(event.data); + if(!found){ + return false; + } + } + + var session = editor.session; + session.insert({ + row: session.getLength(), + column: 0 + }, "\n" + event.data); + + if(session.getLength() >= 50000){ + /* If we get over 500,000 lines lets clear the editor */ + editor.setValue(""); + } + + var row = editor.session.getLength() - 1; + var column = editor.session.getLine(row).length; // or simply Infinity + editor.gotoLine(row + 1, column); + }; +} + +connect_websocket(); + +reconnect_timer = setInterval(function(){ + check_websocket_connection () +}, (1 * 1000)); \ No newline at end of file diff --git a/public/templates/index.html b/public/templates/index.html index 6fb62c9..f4bf9aa 100644 --- a/public/templates/index.html +++ b/public/templates/index.html @@ -211,11 +211,10 @@ + - -