Skip to content
Related Articles

Related Articles

Creating Socket.IO Server using Express Generator

View Discussion
Improve Article
Save Article
  • Last Updated : 12 Jun, 2020

Socket.IO is a library for real-time communication between the server and the client. In Socket.IO, the headers are shared only once and it also works on the top of the TCP layer. Web Sockets are the base of the Socket.IO library. It is easier to implement the Socket.IO in the express applications that are not formed with express-generator.

Socket.IO mainly works on events based communication. Here the server or the client emits an event and it is being caught by another one.

Installation of modules:

  1. Install the Express Generator:

    npm install -g express-generator
  2. Create the express application:

    npm express applicaion_name

    For example you can create “npm express socketIOTest”

  3. We can also set the view engine while making the express application as:

    Setting the view Engine (Optional)

    npm express socketIOTest --view=jade
  4. Install the socket IO:

    npm install --save
    npm install

Steps to create the socket server:

  1. Go to the App.js file and Import Socket.IO and http module as:
    var http=require("http");
    var socketio=require("");
  2. Create a socket IO server:

    var createError = require('http-errors');
    var express = require('express');
    var path = require('path');
    var cookieParser = require('cookie-parser');
    var logger = require('morgan');
    var http = require("http");
    var socketio = require("");
    var app = express();
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    // Create the http server
    const server = require('http').createServer(app);
    // Create the Socket IO server on 
    // the top of http server
    const io = socketio(server);
    // View engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'hbs');
    app.use(express.urlencoded({ extended: false }));
    app.use(express.static(path.join(__dirname, 'public')));
    app.use('/', indexRouter);
    app.use('/users', usersRouter);
    // Catch 404 and forward to error handler
    app.use(function (req, res, next) {
    // Error handler
    app.use(function (err, req, res, next) {
        // Set locals, only providing error
        // in development
        res.locals.message = err.message;
        res.locals.error ='env'
                === 'development' ? err : {};
        // render the error page
        res.status(err.status || 500);
    module.exports = { app: app, server: server };

  3. Now go to the www file inside the BIN folder and replace the code with the following code:

    #!/usr/bin/env node
    // Module dependencies
    var app = require('../app').app;
    var debug = require('debug')('socketiotest:server');
    var http = require('http');
    // Get port from environment and store in Express
    var port = normalizePort(process.env.PORT || '3000');
    app.set('port', port);
    // Create HTTP server
    var server = require("../app").server;
    // Listen on provided port, on all
    // network interfaces.
    server.on('error', onError);
    server.on('listening', onListening);
    // Normalize a port into a number,
    // string, or false.
    function normalizePort(val) {
        var port = parseInt(val, 10);
        if (isNaN(port)) {
            // Named pipe
            return val;
        if (port >= 0) {
            // Port number
            return port;
        return false;
    // Event listener for HTTP server "error" event
    function onError(error) {
        if (error.syscall !== 'listen') {
            throw error;
        var bind = typeof port === 'string'
            ? 'Pipe ' + port
            : 'Port ' + port;
        // Handle specific listen errors with
        // friendly messages
        switch (error.code) {
            case 'EACCES':
                    + ' requires elevated privileges');
            case 'EADDRINUSE':
                console.error(bind + ' is already in use');
                throw error;
    // Event listener for HTTP server "listening" event.
    function onListening() {
        var addr = server.address();
        var bind = typeof addr === 'string'
            ? 'pipe ' + addr
            : 'port ' + addr.port;
        debug('Listening on ' + bind);

This is how you can link the Socket.IO with the express server.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!