From 9db5a1ec722076c7e516e98c302ee82157e7be7d Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan@faked.org> Date: Sat, 1 Mar 2014 20:14:09 +0100 Subject: [PATCH] add keep-alive --- app.js | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/app.js b/app.js index 6656f92..ea96a8b 100644 --- a/app.js +++ b/app.js @@ -15,6 +15,8 @@ var http = require('http'); var path = require('path'); var net = require('net'); var dgram = require('dgram'); +var http = require('http'); + var app = express(); @@ -44,35 +46,46 @@ http.createServer(app).listen(app.get('port'), function(){ findCard(); +function enableShootAndView() { + -function pingCard() { +} + +function pingCard(ip) { - var client = new net.Socket(); - client.connect(0, cardAddr, function() { - client.write('ping'); + req = http.get('http://'+ip+'/', function(res) { + console.log('Card is alive!'); + req.destroy(); }); - client.setTimeout(5000, function(data) { - console.log('TIMEOUT'); + req.on('error', function(err) { + cardFound = false; + //console.log('ERROR: ' + err); + req.destroy(); clearInterval(itvPing); + findCard(); }); - client.on('error', function(err) { - console.log('ERRROR: ' + err); + req.setTimeout(5000, function(data) { + cardFound = false; + console.log('Card has disappeared!'); + req.destroy(); clearInterval(itvPing); - client.destroy(); - }); - - client.on('data', function(data) { - console.log('DATA: ' + data); - client.destroy(); + findCard(); }); } +var alreadySearching = false; + function findCard() { + if(alreadySearching == true) + return; + else + alreadySearching = true; + var socket = dgram.createSocket('udp4'); var message = new Buffer('dummy'); var itvSearch; @@ -87,25 +100,25 @@ function findCard() { }); socket.on('message', function (msg, rinfo) { - //console.log("socket got: " + msg + " from " + rinfo.address + ":" + rinfo.port); clearInterval(itvSearch); socket.close(); msg = msg.toString(); cardAddr = msg.match(/ip=(.*)/)[1]; cardFound = true; itvPing = setInterval(function() { - pingCard(); + pingCard(cardAddr); }, 5000); console.log("Found card on "+cardAddr); + alreadySearching = false; }); socket.on('listening', function () { var address = socket.address(); - //console.log("WiPho server listening on " + address.address + ":" + address.port); sendSearch(); itvSearch = setInterval(function() { sendSearch(); }, 5000); + function sendSearch() { console.log("Searching for card..."); socket.send(message, 0, message.length, 55777, cardAddr, function(err, bytes) { @@ -113,6 +126,7 @@ function findCard() { console.log("socket error:\n" + err.stack); }); } + }); } \ No newline at end of file -- GitLab