Introduction
Socket.io is a powerful library that enables real-time bidirectional communication between a web client and a server. This means you can build applications where data is exchanged instantly, without the need for constant polling. In this blog series, we'll explore how to use Socket.io to create a basic but functional chat application.
Setting up the Project
1. Project Setup
Start by creating a new directory for your project and navigating to it in your terminal. Then, initialize a Node.js project using npm:
npm init -y
2. Install Dependencies
Install the necessary dependencies using npm:
npm install express socket.io
The Server-Side Implementation
1. Setting up the Server
Create a new file named index.js
in your project directory. Paste the following code into the file:
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
const port = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('A user connected');
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
socket.on('disconnect', () => {
console.log('A user disconnected');
});
});
http.listen(port, () => {
console.log(`Server listening on port ${port}`);
});
2. Explanation
This code sets up a simple Express server and initializes Socket.io. The server serves a basic HTML file and handles incoming socket connections:
- 'connection' event: This event is triggered when a new client connects to the server.
- 'chat message' event: This event is emitted by the client when a user sends a message. The server broadcasts this message to all connected clients.
- 'disconnect' event: This event is triggered when a client disconnects from the server.
The Client-Side Implementation
1. Creating the HTML
Create a new file named index.html
in your project directory. Add the following HTML code: