Different Servers in Node.js
Node.js is an open-source and cross-platform runtime environment for executing JavaScript code outside a browser. You need to remember that NodeJS is not a framework and it’s not a programming language. Most of people are confused and understand it’s a framework or a programming language. We often use Node.js for building back-end services like APIs like Web App or Mobile App. There are many ways to create a server and even node.js has its own inbuilt server ‘http’. Some of them are mentioned below:
Creating Server using ‘http‘ Module:
Import http module: Import http module and store returned HTTP instance into a variable.
Syntax:
const http = require("http");
Creating and Binding Server: Create a server instance using the createServer() method and bind it to some port using listen() method.
Syntax:
const server = http.createServer().listen(port)
Parameter: This method (listen()) accepts a single parameter as mentioned above and described below:
- port <Number>: Ports are in the range 1024 to 65535 containing both registered and Dynamic ports.
The below example illustrates the use of the HTTP module in Node.js.
Example: Filename: index.js
javascript
// Node.js program to create // http server // Using require to access http module const http = require( "http" ); // Port number const PORT = process.env.PORT || 2020; // Creating server const server = http.createServer( // Server listening on port 2020 function (req, res) { res.write( 'Hello geeksforgeeks!' ); // Write a response to the client res.end(); } ) .listen(PORT, error => { // Prints in console console.log(`Server listening on port ${PORT}`) }); |
Run the index.js file using the following command:
node index.js
Output:
Server listening on port 2020
Now type http://127.0.0.1:2020/ OR http://localhost:2020 in a web browser to see the output.
Creating Server using ‘https‘ Module:
Note: In order to create an HTTPS server, we need SSL key and certificate, and a built-in https Node.js module.
Import https module: Import https module and store returned HTTP instance into a variable.
Syntax:
const https = require("https");
Creating and Binding Server: Create a server instance using the createServer() method and bind it to some port using listen() method.
Syntax:
const server = https.createServer(options, onResponseCallback).listen(port)
Parameter: This method accepts three parameters as mentioned above and described below:
- options <key, certi>: It includes the key and certificate passed.
- onResponseCallback <Callback>: It is a callback function that is called in response of createServer.
- port <Number>: Ports are in the range 1024 to 65535 containing both registered and Dynamic ports.
The below example illustrates the use of the HTTP module in Node.js.
Example: Filename: index.js
javascript
// Node.js program to create // https server // Using require to access https module const https = require( 'https' ); const fs = require( 'fs' ); const port = 8000; const options = { // Note: We require SSL and certificate // to create https servers key: fs.readFileSync( 'key.pem' ), cert: fs.readFileSync( 'cert.pem' ) }; https.createServer(options, function (req, res) { // Returns the status res.writeHead(200); res.end( "Hello GeeksforGeeks" ); }).listen(port); |
Run the index.js file using the following command:
node index.js
Output:
Hello GeeksforGeeks
Now the server is set up and started, we can get the file by:
curl -k https://localhost:8000
Now type https://127.0.0.1:8000/ OR https://localhost:8000 in a web browser to see the output.
Example: Filename: index.js
javascript
// Node.js program to get the response // from https server // Using require to access http module const https = require( 'https' ); // Printing status code console.log( 'statusCode:' , res.statusCode); // Printing headers console.log( 'headers:' , res.headers); }).on( 'error' , (e) => { console.log(e); }); |
Run the index.js file using the following command:
node index.js
Output:
>> statusCode: 200 >> headers: { server: 'Apache', ......... 'server-timing': 'cdn-cache; desc=HIT, edge; dur=1'}
Creating Server using ‘Express’ Module: In order to use the express module, we need to install the NPM (Node Package Manager) and the following modules (on cmd).
// Creates package.json file >> npm init // Installs express module >> npm install express --save OR >> npm i express -s
Import express module: Import the express module and store returned instance into a variable.
Syntax:
const express = require("express");
Creating Server: The above syntax calls the “express()” function and creates a new express application which gets stored inside the app variable.
Syntax:
const app = express(); // OR by Importing and creating express application const express = require("express")();
Sending and listening to the response: It communicates the request and response with the client and the server. It requires PORT <number> and IP <number> to communicate.
app.listen(PORT, IP, Callback);
Parameter: This method accepts three parameters as mentioned above and described below.
- PORT <Number>: Ports are the endpoints of communication that helps to communicate with the client and the server.
- IP <Number>: IPs represent the IPv4 or IPv6 address of a host or a device.
- Callback <Function>: It accepts a function.
The below example illustrates the Express.js module in Node.js.
Example: Filename: index.js
javascript
// Node.js program to create server // with help of Express module // Importing express const express = require( 'express' ); // Creating new express app const app = express(); // PORT configuration const PORT = process.env.PORT || 2020; // IP configuration const IP = process.env.IP || 2021; // Create a route for the app app.get( '/' , (req, res) => { res.send( 'Hello Vikas_g from geeksforgeeks!' ); }); // Create a route for the app app.get( '*' , (req, res) => { res.send( 'OOPS!! The link is broken...' ); }); // Server listening to requests app.listen(PORT, IP, () => { console.log(`The Server is running at: http: //localhost:${PORT}/`); }); |
Run the index.js file using the following command:
node index.js
Output:
The Server is running at: http://localhost:2020
Now type http://127.0.0.1:2020/ OR http://localhost:2020/ in a web browser to see the output.
Creating Server using ‘Hapi’ Module: In order to use the hapi module, we need to install the NPM (Node Package Manager) and the following modules (on cmd).
// creates package.json file >> npm init // Installs hapi module >> npm install @hapi/hapi --save
Import hapi module: Import hapi module and store returned instance into a variable.
Syntax:
const Hapi = require("@hapi/hapi");
Creating Server: The above syntax imports the “express()” module and now it creates a server. It communicates the request and response with the client and the server. It requires PORT <number> and host <string> to communicate.
Syntax:
const server = Hapi.server({port: 2020, host: 'localhost'});
Parameter: This method accepts three parameters as mentioned above and described below.
- PORT <Number>: Ports are the endpoints of communication which helps to communicate with the client and the server.
- HOST <String>: It is the name of the host.
The below example illustrates the Hapi module in Node.js.
Example: Filename: index.js
javascript
// Node.js program to create server // using hapi module // Importing hapi module const Hapi = require( '@hapi/hapi' ); // Creating Server const server = Hapi.server({ port: 2020, host: 'localhost' }); // Creating route server.route({ method: 'GET' , path: '/' , handler: (request, hnd) => { return 'Hello GeeksForGeeks!' ; } }); const start = async () => { await server.start(); console.log( 'Server running at' , server.info.uri); }; process.on( 'unhandledRejection' , (err) => { console.log(err); process.exit(1); }); start(); |
Run the index.js file using the following command:
node index.js
Output:
Server running at: http://localhost:2020
Now type http://localhost:2020/ in a web browser to see the output.
Creating Server using ‘Koa’ Module: In order to use the Koa module, we need to install the NPM (Node Package Manager) and the following modules (on cmd).
// Creates package.json file >> npm init // Installs express module >> npm install koa --save OR >> npm i koa -s
Import express module: Import the koa module and store returned instance into a variable.
Syntax:
// Importing koa module const koa = require("koa");
Creating Server: The above syntax imports the koa module and creates a new koa application which gets stored inside the app variable.
Syntax:
// Creating koa application const app = new koa();
Sending and listening to the response: It communicates the request and response with the client and the server. It requires PORT <number> and IP <number> to communicate.
app.listen(PORT, IP, Callback);
Parameter: This method accepts three parameters as mentioned above and described below.
- PORT <Number>: Ports are the endpoints of communication that helps to communicate with the client and the server.
- IP <Number>: IPs represent the IPv4 or IPv6 address of a host or a device.
- Callback <Function>: It accepts a function.
The below example illustrates the Koa module in Node.js.
Example: Filename: index.js
javascript
// Node.js program to create server // with help of Koa module // Importing koa const koa = require( 'koa' ); // Creating new koa app const app = new koa(); // PORT configuration const PORT = process.env.PORT || 2020; // IP configuration const IP = process.env.IP || 2021; app.use( function * () { this .body = "Hello GeeksForGeeks!" ; }); // Server listening to requests app.listen(PORT, IP, () => { console.log( "Server started at port" , PORT); }); |
Run the index.js file using the following command:
node index.js
Output:
The Server is running at port 2020
Now type http://127.0.0.1:2020/ OR http://localhost:2020/ in a web browser to see the output.
Please Login to comment...