Skip to content

Instantly share code, notes, and snippets.

@sanjay1909
Created April 16, 2015 14:11
Show Gist options
  • Save sanjay1909/5b975be3f118f76ea0af to your computer and use it in GitHub Desktop.
Save sanjay1909/5b975be3f118f76ea0af to your computer and use it in GitHub Desktop.
Basic Hrrtp server, to load file for the request and server response time to get for an ajax call
var port = 8001;
var serverUrl = "127.0.0.1";
var http = require("http");
var path = require("path");
var fs = require("fs");
var url = require('url');
var responseStartTime;
console.log("Web server starting at " + serverUrl + ":" + port);
var extensions = {
".html": "text/html",
".js": "application/javascript",
".css": "text/css",
".txt": "text/plain",
".jpg": "image/jpeg",
".gif": "image/gif",
".png": "image/png"
};
var server = http.createServer(function (request, response) {
responseStartTime = Date.now();
var urlName = request.url || "index.html";
var ext = path.extname(urlName);
var pathName = url.parse(urlName).pathname;
var physicalPath = __dirname;
var validExt = extensions[ext];
if (validExt) { // loads supported extension
physicalPath += urlName;
addFileToResponse(physicalPath, response, validExt);
} else if (pathName == '/serverResponseTime') { // ajax call response
sendServerResponseTime(response)
} else {
console.log("not supported sorry");
}
});
function addFileToResponse(localPath, res, mimeType) {
fs.exists(localPath, function (exists) {
if (exists) {
fs.readFile(localPath, function (err, contents) {
if (!err) {
res.setHeader("Content-Length", contents.length);
res.setHeader("Content-Type", mimeType);
res.statusCode = 200;
res.write(contents);
res.end();
} else {
res.writeHead(500);
res.end();
}
});
} else {
console.log("File not found: " + urlName);
response.writeHead(404);
response.end();
}
});
}
function sendServerResponseTime(response) {
var responseTime = {
startTime: responseStartTime,
endTime: Date.now()
};
var resTimeAsJson = JSON.stringify(responseTime);
response.setHeader("Content-Length", resTimeAsJson.length);
response.setHeader("Content-Type", 'application/json');
response.statusCode = 200;
response.write(resTimeAsJson);
response.end();
}
server.listen(port, serverUrl);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment