Serve up a single file for all requests to the server.
./httpServe <path to file>
#!/usr/bin/env node | |
var http = require("http"); | |
var url = require("url"); | |
var path = require("path"); | |
var fs = require("fs"); | |
var port = 9990; | |
var filename = process.argv[2] || 'index.html'; | |
var server = http.createServer(function(request, response) { | |
var uri = url.parse(request.url).pathname; | |
filename = path.resolve(filename); | |
console.time('serve'); | |
fs.exists(filename, function(exists) { | |
if(!exists) { | |
response.writeHead(404, {"Content-Type": "text/plain"}); | |
response.write("404 Not Found\n"); | |
response.end(); | |
return; | |
} | |
if (fs.statSync(filename).isDirectory()) { | |
console.log(filename); | |
throw new Error("directory not supported"); | |
} | |
fs.readFile(filename, "binary", function(err, file) { | |
if(err) { | |
response.writeHead(500, {"Content-Type": "application/octet-stream"}); | |
response.write(err + "\n"); | |
response.end(); | |
return; | |
} | |
response.writeHead(200); | |
response.write(file, "binary"); | |
response.end(); | |
console.log(filename) | |
console.timeEnd('serve'); | |
}); | |
}); | |
}); | |
server.listen(parseInt(port, 10)); | |
server.on('connect', function(req, cltSocket, head) { | |
}); | |
console.log("serving %s\n => http://localhost:%s \nCTRL + C to shutdown", filename, port); |