Reading time: 2 minutes
Hello, today I’m going to show you how to create a chat using Socket.io and JavaScript:

To get started, you’ll need to have Node.js and npm installed (https://nodejs.org/en/) on your computer. Then, follow these steps:
- Create a new directory for your project and open a command prompt in that directory.
- Run the command
npm initto initialize your project. Follow the prompts to set up the name, version, and description of your project. - Run the command
npm install express socket.ioto install the dependencies for your project. This will install Express, a server framework for Node.js, and Socket.io, a real-time communication library for JavaScript. - Create a file called
server.jsand write the following code:
const express = require('express');
const socketio = require('socket.io');
const app = express();
const server = app.listen(3000, () => console.log('Listening on port 3000'));
const io = socketio(server);
io.on('connection', (socket) => {
console.log('A user has connected');
socket.on('disconnect', () => console.log('A user has disconnected'));
});
This code initializes a server using Express and then initializes Socket.io on the server. It then adds a connection and disconnection event to log a message in the console whenever a user connects or disconnects from the chat.
- Create a file called
index.htmland write the following code:
<!doctype html>
<html>
<head>
<title>Chat App</title>
</head>
<body>
<div id="chat">
<form id="send-message">
<input type="text" placeholder="Type a message" />
<button>Send</button>
</form>
<ul id="messages"></ul>
</div>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
</script>
</body>
</html>
This code creates a basic HTML page with a form for sending messages and a list for displaying the sent messages. It also includes the socket.io.js file, which is necessary to use Socket.io on the client side.
- Modify the code in
server.jsto handle the message send event and broadcast the message to all connected users:
io.on('connection', (socket) => {
console.log('A user has connected');
socket.on('send message', (message) => {
io.emit('new message', message);
});
socket.on('disconnect', () => console.log('A user has disconnected'));
});
- Modify the code in
index.htmlto handle the new message event and display the message in the list:
<!doctype html>
<html>
<head>
<title>Chat App</title>
</head>
<body>
<div id="chat">
<form id="send-message">
<input type="text" placeholder="Type a message" />
<button>Send</button>
</form>
<ul id="messages"></ul>
</div>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
const form = document.getElementById('send-message');
const messages = document.getElementById('messages');
form.addEventListener('submit', (event)=> {
event.preventDefault();
const input = form.querySelector('input');
socket.emit('send message', input.value);
input.value = '';
});
socket.on('new message', (message) => {
const li = document.createElement('li');
li.innerText = message;
messages.appendChild(li);
});
</script>
</body>
</html>
Run the server using the command node server.js and open the index.html file in your browser. You should see a page with a form for sending messages and an empty list. Open multiple browser tabs or use different browsers to simulate multiple users connected to the chat. Each time you send a message, itshould appear in the list for all connected users.
That’s it! Now you have a basic chat application using JavaScript and Socket.io.
You can add more features, such as the option to send private messages or customize the page layout using CSS.
