Hello all,
In the last post, i have explained the TCP chat server.
In this post, i am going to briefly explain how to create a basic http server and extend it to create a HTTP server that can be used to display the contents of stored static files.
The code for final static file HTTP server will be at last of tutorial,so in between tutoria. dont worry about the code.
So to create an http server, we need to use core "http" node module.
var http = require("http");
then server is created by function createServer with a callback (called everytime a request is raised for server [similar as in TCP])
here the callback has two parameters, request and response. request attribute holds information related to information in request like url, headers etc..
var server = http.createServer(function(request,response){
...
});
to write a response to a browser, we have response attribute.
var server = http.createServer(function(request,response){
response.writeHead(200 , {"Content-type":"text/plain"})
response.end("hello from HTTP server");
});
Here the writeHead function is called on response object, used to set resposne header.
200 : Success status (like 404 : page not found. 403 Forbidden etc..)
The next parameter sets the page content-type.
At the end we need to listen to the some port.
server.listen(port);
So , a basic HTTP Server looks like,(http_server.js)
var http = require("http");
var port = 1234;
var server = http.createServer(function(request,response){
response.writeHead(200,{"Content-type":"text/plain"});
response.end("hello from Http Server");
});
server.listen(port);
To run this, run http_server.js
open browser and run http://localhost:1234
And thats it. This is the first basic HTTP web server.
HTTP Static File Server
For this server, you need the knowledge of fs, path and http node modules.
The code for this is below,
var fs = require("fs");
var http = require("http");
var path = require("path");
var port = 1244;
var server = http.createServer(function(request,response){
console.log("TRrying to read file "+request.url);
var new_url = path.normalize("."+request.url);
console.log(new_url);
function reportError(err){
console.log(err);
response.writeHead(500);
response.end("Internal server error occured.");
}
function fileNotFound(){
response.writeHead(404);
response.end("Requested file does not exixts.");
}
function forbiddenError(){
response.writeHead(403);
response.end("Access is forbidden.");
}
fs.exists(new_url,function(exists){
if(exists)
{
fs.stat(new_url,function(err,stat){
if(err){
console.log("An error occured");
return reportError(err);
}
else
{
if(stat.isDirectory()){
console.log("Requested file is directory")
return forbiddenError();
}
else
{
console.log("Requested file found");
var rs = fs.createReadStream(new_url);
response.writeHead(200);
rs.pipe(response);
}
}
});
}
else
{
return fileNotFound();
}
});
});
server.listen(port);
If anyone have any doubt regarding the code, feel free to comment.
Thanks.
In the last post, i have explained the TCP chat server.
In this post, i am going to briefly explain how to create a basic http server and extend it to create a HTTP server that can be used to display the contents of stored static files.
The code for final static file HTTP server will be at last of tutorial,so in between tutoria. dont worry about the code.
So to create an http server, we need to use core "http" node module.
var http = require("http");
then server is created by function createServer with a callback (called everytime a request is raised for server [similar as in TCP])
here the callback has two parameters, request and response. request attribute holds information related to information in request like url, headers etc..
var server = http.createServer(function(request,response){
...
});
to write a response to a browser, we have response attribute.
var server = http.createServer(function(request,response){
response.writeHead(200 , {"Content-type":"text/plain"})
response.end("hello from HTTP server");
});
Here the writeHead function is called on response object, used to set resposne header.
200 : Success status (like 404 : page not found. 403 Forbidden etc..)
The next parameter sets the page content-type.
At the end we need to listen to the some port.
server.listen(port);
So , a basic HTTP Server looks like,(http_server.js)
var http = require("http");
var port = 1234;
var server = http.createServer(function(request,response){
response.writeHead(200,{"Content-type":"text/plain"});
response.end("hello from Http Server");
});
server.listen(port);
To run this, run http_server.js
open browser and run http://localhost:1234
And thats it. This is the first basic HTTP web server.
HTTP Static File Server
For this server, you need the knowledge of fs, path and http node modules.
The code for this is below,
var fs = require("fs");
var http = require("http");
var path = require("path");
var port = 1244;
var server = http.createServer(function(request,response){
console.log("TRrying to read file "+request.url);
var new_url = path.normalize("."+request.url);
console.log(new_url);
function reportError(err){
console.log(err);
response.writeHead(500);
response.end("Internal server error occured.");
}
function fileNotFound(){
response.writeHead(404);
response.end("Requested file does not exixts.");
}
function forbiddenError(){
response.writeHead(403);
response.end("Access is forbidden.");
}
fs.exists(new_url,function(exists){
if(exists)
{
fs.stat(new_url,function(err,stat){
if(err){
console.log("An error occured");
return reportError(err);
}
else
{
if(stat.isDirectory()){
console.log("Requested file is directory")
return forbiddenError();
}
else
{
console.log("Requested file found");
var rs = fs.createReadStream(new_url);
response.writeHead(200);
rs.pipe(response);
}
}
});
}
else
{
return fileNotFound();
}
});
});
server.listen(port);
If anyone have any doubt regarding the code, feel free to comment.
Thanks.
Comments
Post a Comment