Open In App

Different Servers in Node.js

Last Updated : 06 Apr, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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');
 
https.get('https://www.geeksforgeeks.org/', (res) => {
 
    // 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.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads