How to Build a Real-Time Chat App with Node.js | SSTech System

William Anderson
3 min readOct 23, 2023

--

Real-time chat apps are all the rage these days, and for good reason. They allow users to communicate with each other instantly, without having to refresh the page. This makes them ideal for a variety of use cases, such as customer support, team collaboration, and social media.

If you’re interested in building your own real-time chat app, Node.js is a great choice. Node.js is a JavaScript runtime environment that is well-suited for building scalable and efficient real-time applications.

In this article, we’ll walk you through the steps on how to build a simple real-time chat app with Node.js and Socket.io.

Prerequisites

To get started, you’ll need to have the following installed on your machine:

  • Node.js
  • Socket.io

You can install Node.js from the Node.js website. To install Socket.io, run the following command in your terminal:

npm install socket.io

Creating the server

Once you have Node.js and Socket.io installed, you can start creating the server for your chat app. Create a new file called server.js and add the following code:

JavaScript

const express = require('express');
const io = require('socket.io');
const app = express();// Create a server and listen on port 3000
const server = app.listen(3000, () => {
console.log('Server is running on port 3000');
});
// Initialize Socket.io
io.attach(server);
// Create a namespace for the chat app
const chatNamespace = io.of('/chat');
// Listen for new connections
chatNamespace.on('connection', (socket) => {
// Handle messages from clients
socket.on('message', (message) => {
// Broadcast the message to all other clients in the namespace
chatNamespace.emit('message', message);
});
});

This code creates a simple Node.js server that listens on port 3000. It also initializes Socket.io and creates a namespace for the chat app.

Creating the client

Next, you need to create the client for your chat app. Create a new file called chat.html and add the following code:

HTML

<!DOCTYPE html>
<html>
<head>
<title>Chat App</title>
</head>
<body>
<h1>Chat App</h1>
  <input type="text" id="message" placeholder="Enter a message">
<button type="submit" id="send-message">Send</button>
<div id="chat-messages"></div> <script src="/socket.io/socket.io.js"></script>
<script src="chat.js"></script>
</body>
</html>

This code creates a simple HTML page with a text input and a button. The button is used to send messages to the server.

Now, you need to create a JavaScript file called chat.js and add the following code:

JavaScript

const socket = io('/chat');
// Listen for messages from the server
socket.on('message', (message) => {
// Add the message to the chat messages container
const chatMessagesContainer = document.querySelector('#chat-messages');
chatMessagesContainer.innerHTML += `<p>${message}</p>`;
});
// Send a message to the server
const sendMessageButton = document.querySelector('#send-message');
sendMessageButton.addEventListener('click', () => {
const message = document.querySelector('#message').value;
socket.emit('message', message);
});

This code connects to the Socket.io server and listens for messages. When a message is received, the message is added to the chat messages container.

Starting the server and client

Now that you have created the server and client for your chat app, you can start them up. To start the server, run the following command in your terminal:

node server.js

To start the client, open the chat.html file in a web browser.

You should now be able to send and receive messages in real time with other clients who are connected to the chat app.

Conclusion

In this article, we showed you how to build a real-time chat app with Node.js. We used the Socket.io library to handle the real-time communication between the server and the clients. You can use this as a starting point to build your own real-time chat app with additional features such as user accounts, private messages, and chat history.

--

--

William Anderson
William Anderson

Written by William Anderson

Mobile & Web Application Development Services. Visit now https://www.sstechsystem.com/

Responses (1)