|
|
- 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 });
- }
|