unpkg/server.js

40 lines
1.0 KiB
JavaScript
Raw Normal View History

2017-11-26 04:28:55 +00:00
const http = require("http")
const throng = require("throng")
const createServer = require("./server/createServer")
const port = parseInt(process.env.PORT, 10) || 5000
2017-08-19 06:10:04 +00:00
function startServer(id) {
2017-09-13 15:06:50 +00:00
const server = http.createServer(createServer())
2017-08-19 06:10:04 +00:00
// 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
2017-11-26 04:28:55 +00:00
server.setTimeout(25000, function(socket) {
2017-08-19 06:10:04 +00:00
const message = `Timeout of 25 seconds exceeded`
2017-11-26 04:28:55 +00:00
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")
)
2017-08-19 06:10:04 +00:00
})
2017-11-26 04:28:55 +00:00
server.listen(port, function() {
console.log("Server #%s listening on port %s, Ctrl+C to stop", id, port)
2017-08-19 06:10:04 +00:00
})
}
throng({
workers: process.env.WEB_CONCURRENCY || 1,
2017-08-13 00:23:40 +00:00
lifetime: Infinity,
grace: 25000,
2017-08-19 06:10:04 +00:00
start: startServer
})