summaryrefslogtreecommitdiffstats
path: root/webchat
diff options
context:
space:
mode:
Diffstat (limited to 'webchat')
-rw-r--r--webchat/hello_web.js18
-rw-r--r--webchat/package.json2
2 files changed, 18 insertions, 2 deletions
diff --git a/webchat/hello_web.js b/webchat/hello_web.js
index 31e106c7..4b7595d7 100644
--- a/webchat/hello_web.js
+++ b/webchat/hello_web.js
@@ -10,6 +10,8 @@ Clients.broadcast = function(object) {
client.write(JSON.stringify(object));
});
}
+var pingTimeoutDelay = 5*60*1000
+var lastping = setTimeout(reconnect, pingTimeoutDelay)
var irc_client = new irc.Client('irc.freenode.net', 'kweb', {
channels: ['#krebs'],
@@ -21,14 +23,28 @@ var irc_client = new irc.Client('irc.freenode.net', 'kweb', {
debug: true,
showErrors: true,
port: 6697,
+ autoRejoin: true,
+ autoConnect: true
});
+var reconnect = function() {
+ console.log("reconnecting due to pingtimeout");
+ irc_client.disconnect();
+ irc_client.connect();
+}
+
+irc_client.on('ping', function(server) {
+ console.log("got ping from server, renewing timeout for automatic reconnect");
+ clearTimeout(lastping);
+ lastping = setTimeout(reconnect, pingTimeoutDelay);
+})
+
irc_client.on('message#krebs', function(from, message) {
console.log({ from: from, message: message });
Clients.broadcast({ from: from, message: message });
+ clearTimeout(lastping);
});
-
var echo = sockjs.createServer();
echo.on('connection', function(conn) {
var name = '['+conn.remoteAddress+':'+conn.remotePort+']';
diff --git a/webchat/package.json b/webchat/package.json
index 894ac7e8..cb264a8c 100644
--- a/webchat/package.json
+++ b/webchat/package.json
@@ -4,7 +4,7 @@
"dependencies": {
"connect": "2.11.0",
"irc": "0.3.6",
- "sockjs": "0.3.8",
+ "sockjs": "0.3.8"
},
"scripts": {
"test": "tap test/*.js"