Skip to content

Instantly share code, notes, and snippets.

@mimiflynn
Created June 17, 2014 14:23
Show Gist options
  • Save mimiflynn/454fb0ae155d2fe58467 to your computer and use it in GitHub Desktop.
Save mimiflynn/454fb0ae155d2fe58467 to your computer and use it in GitHub Desktop.
Node http server for dev
# nodejs http server
```javascript
var http = require('http');
var path = require('path');
var url = require('url');
var fs = require('fs');
var port = 4020;
var extensions = {
".html": "text/html",
".css": "text/css",
".js": "application/javascript",
".png": "image/png",
".gif": "image/gif",
".jpg": "image/jpeg"
};
http.createServer(function (request, response) {
var my_path = url.parse(request.url).pathname || 'index.html'; // set path to index.html if nothing is specified
var full_path = path.join(process.cwd(), my_path);
var ext = path.extname(my_path);
var mime;
if (extensions[ext]) {
mime = extensions[ext];
}
fs.exists(full_path, function (exists) {
if (!exists) {
response.writeHeader(404, {'Content-Type': 'text/plain'});
response.write('404 Not Found\n');
response.end();
}
else {
fs.readFile(full_path, 'binary', function (err, file) {
if (err) {
response.writeHeader(500, {'Content-Type': 'text/plain'});
response.write(err + '\n');
response.end();
}
else {
var ip = request.connection.remoteAddress;
var ts = new Date().toLocaleString();
console.log(ts, ' ', ip, ' ', '200', ' ', my_path, mime);
response.writeHeader(200,{'Content-Type': mime});
response.write(file, 'binary');
response.end();
}
});
}
});
}).listen(port);
console.log('node server running on port: ' + port);
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment