const http = require('http') const throng = require('throng') const createServer = require('./server/createServer') const port = parseInt(process.env.PORT, 10) || 5000 function startServer(id) { const server = http.createServer(createServer()) // Heroku dynos automatically timeout after 30s. Set our // own timeout here to force sockets to close before that. // https://devcenter.heroku.com/articles/request-timeout server.setTimeout(25000, function (socket) { const message = `Timeout of 25 seconds exceeded` socket.end([ 'HTTP/1.1 503 Service Unavailable', 'Date: ' + (new Date).toGMTString(), 'Content-Length: ' + Buffer.byteLength(message), 'Content-Type: text/plain', 'Connection: close', '', message ].join('\r\n')) }) server.listen(port, function () { console.log('Server #%s listening on port %s, Ctrl+C to stop', id, port) }) } throng({ workers: process.env.WEB_CONCURRENCY || 1, lifetime: Infinity, grace: 25000, start: startServer })