| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | var express = require('express'),    async = require('async'),    pg = require("pg"),    cookieParser = require('cookie-parser'),    bodyParser = require('body-parser'),    methodOverride = require('method-override'),    app = express(),    server = require('http').Server(app),    io = require('socket.io')(server);io.set('transports', ['polling']);var port = process.env.PORT || 4000;io.sockets.on('connection', function (socket) {  socket.emit('message', { text : 'Welcome!' });  socket.on('subscribe', function (data) {    socket.join(data.channel);  });});async.retry(  {times: 1000, interval: 1000},  function(callback) {    pg.connect('postgres://postgres@db/postgres', function(err, client, done) {      if (err) {        console.error("Failed to connect to db");      }      callback(err, client);    });  },  function(err, client) {    if (err) {      return console.err("Giving up");    }    console.log("Connected to db");    getVotes(client);  });function getVotes(client) {  client.query('SELECT vote, COUNT(id) AS count FROM votes GROUP BY vote', [], function(err, result) {    if (err) {      console.error("Error performing query: " + err);    } else {      var data = result.rows.reduce(function(obj, row) {        obj[row.vote] = row.count;        return obj;      }, {});      io.sockets.emit("scores", JSON.stringify(data));    }    setTimeout(function() {getVotes(client) }, 1000);  });}app.use(cookieParser());app.use(bodyParser());app.use(methodOverride('X-HTTP-Method-Override'));app.use(function(req, res, next) {  res.header("Access-Control-Allow-Origin", "*");  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");  res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");  next();});app.use(express.static(__dirname + '/views'));app.get('/', function (req, res) {  res.sendFile(path.resolve(__dirname + '/views/index.html'));});server.listen(port, function () {  var port = server.address().port;  console.log('App running on port ' + port);});
 |