DEV Community

Raj Madisetti
Raj Madisetti

Posted on

Socket.IO: Real-Time Communication

Hello fellow Javascript coders,

This article will explain Socket.IO and its advantageous use in full stack web applications as opposed to a traditional and lengthy database approach.

Firstly, Socket.IO is a Javascript library that facilitates real-time communication between clients and servers. This function is an integral component of any application that relies on data streaming, messaging, simultaneous group collaboration, and, even, gaming. Socket.IO is consisted of two parts that allow this instant communication: a client-side library in the browser and server-side library in Node.js. Sockets provide a two-way channel between these two sides of the interaction that allows clients to push to a server and receive an emitted response to all connected clients in a very short time. Because of this efficient functionality, many popular applications use it such as Microsoft Office, Trello, and Zendesk.

Now, in order to implement Socket.IO in your application, follow the next steps. First, we need to install express and using the node package manager (npm).
npm init
Enter yes to all of the questions the terminal asks. Then, run:
npm install --save express
This installs all the packages needed to correctly run Socket.IO. Next, we need to implement the application using the installed packages. In a .js file, use the following:
const express = require('express');
const app = express();
const server = require('http').createServer(app);
const io = require('')(server);
const socket = io();

Next, we need to tell the program what to do when a connection is established. Use this command:
module.exports = function(io) {
io.on('connection', function(socket) {
socket.on('new-data', function(data) {

Now, whenever a connection 'new-data' is established, the data will log in the console. Nice!

This framework only outlines the beginning of a Socket.IO application, but there is so much more to do in terms of creativity and practicality.

Discussion (0)