You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
2.6 KiB

  1. var express = require('express'),
  2. http = require('http'),
  3. io = require('socket.io'),
  4. bodyParser = require('body-parser'),
  5. cookieParser = require('cookie-parser'),
  6. mongojs = require('mongojs');
  7. var app = express();
  8. app.use(express.static('./public'));
  9. var mongoUri = "mongodb://localhost:27017/visualizer";
  10. var db = mongojs( mongoUri );
  11. var honeyCombs = db.collection('honeyCombs');
  12. // honeyCombs.insert({dio: "cane", type: "flyingPig"});
  13. //Specifying the public folder of the server to make the html accesible using the static middleware
  14. app.use(cookieParser());
  15. var jsonParser = bodyParser.json()
  16. // create application/x-www-form-urlencoded parser
  17. var urlencodedParser = bodyParser.urlencoded({ extended: false })
  18. // POST /login gets urlencoded bodies
  19. function findSocketByCookie(cookie) {
  20. for(var i in io.sockets.connected) {
  21. var socket = io.sockets.connected[i];
  22. if(socket.handshake.headers.cookie.indexOf(cookie) !== -1){
  23. return socket;
  24. }
  25. }
  26. }
  27. app.post('/show', urlencodedParser, function (req, res) {
  28. res.sendStatus(200);
  29. console.log("Sending json to live interfaces...");
  30. // console.dir(io.sockets.connected);
  31. for(var i in io.sockets.connected) {
  32. var socket = io.sockets.connected[i];
  33. socket.emit("jsonHoneycomb", req.body.honeyComb);
  34. saveQuery(req.body.honeyComb);
  35. }
  36. // var socket = findSocketByCookie(req.cookies.myUniqueCookie);
  37. });
  38. var server = http.createServer(app).listen(8080);
  39. console.log("Listening on port 8080");
  40. console.log("Send jsons to /show please.");
  41. //Server listens on the port 8124
  42. var io = io.listen(server);
  43. /*initializing the websockets communication , server instance has to be sent as the argument */
  44. io.sockets.on('connection', function(socket){
  45. console.log("New Client Connected.");
  46. socket.on('disconnect', function () {
  47. console.log("Client disconnected.")
  48. });
  49. socket.on('ackMessage', function(msg){
  50. if(msg == "true"){
  51. console.log('Message received.');
  52. }
  53. });
  54. socket.on('liveMessage', function(msg){
  55. if(msg == "true"){
  56. console.log('Live interface connected.');
  57. }
  58. });
  59. socket.on('jsonToParse', function(msg){
  60. console.log('Json received.');
  61. saveQuery(msg);
  62. // socket.emit("jsonHoneycomb", msg);
  63. });
  64. });
  65. function saveQuery(query){
  66. var d = new Date();
  67. d =
  68. ("00" + (d.getMonth() + 1)).slice(-2) + "/" +
  69. ("00" + d.getDate()).slice(-2) + "/" +
  70. d.getFullYear() + " " +
  71. ("00" + d.getHours()).slice(-2) + ":" +
  72. ("00" + d.getMinutes()).slice(-2) + ":" +
  73. ("00" + d.getSeconds()).slice(-2)
  74. ;
  75. console.log("Saving query in db...");
  76. honeyCombs.insert({ honeyComb: query, dateStamp: d });
  77. }