var express = require('express'),
|
|
http = require('http'),
|
|
io = require('socket.io'),
|
|
bodyParser = require('body-parser'),
|
|
cookieParser = require('cookie-parser'),
|
|
mongojs = require('mongojs');
|
|
|
|
var app = express();
|
|
app.use(express.static('./public'));
|
|
|
|
var mongoUri = "mongodb://localhost:27017/visualizer";
|
|
var db = mongojs( mongoUri );
|
|
var honeyCombs = db.collection('honeyCombs');
|
|
var leaderBoards = db.collection('leaderBoards');
|
|
// leaderBoards.insert({dio: "cane", type: "flyingPig"});
|
|
|
|
//Specifying the public folder of the server to make the html accesible using the static middleware
|
|
app.use(cookieParser());
|
|
|
|
var jsonParser = bodyParser.json()
|
|
|
|
// create application/x-www-form-urlencoded parser
|
|
var urlencodedParser = bodyParser.urlencoded({ extended: false })
|
|
|
|
// POST /login gets urlencoded bodies
|
|
|
|
|
|
|
|
function findSocketByCookie(cookie) {
|
|
for(var i in io.sockets.connected) {
|
|
var socket = io.sockets.connected[i];
|
|
if(socket.handshake.headers.cookie.indexOf(cookie) !== -1){
|
|
return socket;
|
|
}
|
|
}
|
|
}
|
|
|
|
app.post('/show', urlencodedParser, function (req, res) {
|
|
res.sendStatus(200);
|
|
console.log("Sending json to live interfaces...");
|
|
|
|
// console.dir(io.sockets.connected);
|
|
for(var i in io.sockets.connected) {
|
|
var socket = io.sockets.connected[i];
|
|
socket.emit("jsonHoneycomb", req.body.honeyComb);
|
|
saveQuery(req.body.honeyComb);
|
|
}
|
|
// var socket = findSocketByCookie(req.cookies.myUniqueCookie);
|
|
|
|
|
|
});
|
|
|
|
var server = http.createServer(app).listen(8080);
|
|
|
|
console.log("Listening on port 8080");
|
|
console.log("Send jsons to /show please.");
|
|
|
|
//Server listens on the port 8124
|
|
var io = io.listen(server);
|
|
/*initializing the websockets communication , server instance has to be sent as the argument */
|
|
io.sockets.on('connection', function(socket){
|
|
|
|
console.log("New Client Connected.");
|
|
|
|
socket.on('disconnect', function () {
|
|
console.log("Client disconnected.")
|
|
});
|
|
|
|
socket.on('ackMessage', function(msg){
|
|
if(msg == "true"){
|
|
console.log('Message received.');
|
|
}
|
|
});
|
|
socket.on('liveMessage', function(msg){
|
|
if(msg == "true"){
|
|
console.log('Live interface connected.');
|
|
}
|
|
});
|
|
socket.on('jsonToParse', function(msg){
|
|
console.log('Json received.');
|
|
saveQuery(msg);
|
|
// socket.emit("jsonHoneycomb", msg);
|
|
|
|
});
|
|
socket.on('leaderBoard',function(lb){
|
|
leaderBoards.find().sort({timeStamp:-1}).limit(1, function(err, docs){
|
|
|
|
var parsedLb = JSON.parse(lb);
|
|
if( docs.length ){
|
|
if(typeof docs[0].timeStamp != "undefined"){
|
|
|
|
if( parsedLb.timeStamp - docs[0].timeStamp > 600000){
|
|
leaderBoards.insert(parsedLb);
|
|
console.log("Saving stats report.");
|
|
}
|
|
}
|
|
}else{
|
|
leaderBoards.insert(parsedLb);
|
|
|
|
}
|
|
if(err){
|
|
console.dir(err);
|
|
}
|
|
});
|
|
//
|
|
|
|
});
|
|
|
|
});
|
|
function saveQuery(query){
|
|
var d = new Date();
|
|
d =
|
|
("00" + (d.getMonth() + 1)).slice(-2) + "/" +
|
|
("00" + d.getDate()).slice(-2) + "/" +
|
|
d.getFullYear() + " " +
|
|
("00" + d.getHours()).slice(-2) + ":" +
|
|
("00" + d.getMinutes()).slice(-2) + ":" +
|
|
("00" + d.getSeconds()).slice(-2)
|
|
;
|
|
console.log("Saving query in db...");
|
|
honeyCombs.insert({ honeyComb: query, dateStamp: d });
|
|
}
|