Back to blog

Creating a Simple Chat with Socket.IO and Node.js 💬

In this tutorial, we will create a real-time chat using Socket.IO and Node.js. Socket.IO is a library that enables real-time, bidirectional, event-based communication between the browser and the server.

Advertisement

Preparing the Environment

To get started, make sure you have Node.js and npm installed on your system. If you don't have it, you can download Node.js here. After installation, you can install Socket.IO with the following command:

npm install socket.io

Configuring the Server

Let's start by creating a simple HTTP server in Node.js. Next, let's configure Socket.IO to use this server:

const express = require('express');const http = require('http');const socketIo = require('socket.io');const app = express();const server = http.createServer(app);const io = socketIo(server);app.get('/', (req, res) => {  res.sendFile(__dirname + '/index.html');});io.on('connection', socket => {  console.log('A user has logged in');});server.listen(3000, () => {  console.log('Server listening on port 3000');});

Creating the User Interface

Now, let's create a simple user interface for our chat. In the index.html file, we will add a form to send messages and an area to display received messages:

<!DOCTYPE html><html>  <body>    <ul id="messages"></ul>    <form action="">      <input id="m" autocomplete="off" /><button>Send</button>    </form>    <script src="/socket.io/socket.io.js"></script>    <script>      const socket = io();      document.querySelector('form').addEventListener('submit', event => {        event.preventDefault();        const input = document.getElementById('m');        socket.emit('chat message', input.value);        input.value = '';      });      socket.on('chat message', msg => {        const item = document.createElement('li');        item.textContent = msg;        document.getElementById('messages').appendChild(item);      });    </script>  </body></html>

Ending the Chat

Now, let's go back to our server and add the code to receive and send messages:

io.on('connection', socket => {  console.log('A user has logged in');  socket.on('chat message', msg => {    io.emit('chat message', msg);  });});

Conclusion

Congratulations! You've created a basic live chat with Socket.IO and Node.js. This is a great starting point for creating more complex real-time applications!

To continue improving your Node.js and Socket.IO skills, check out the article on Learning about RESTful APIs in Node.js.

Advertisement

Let's go up 🦅

Previous post Next post

Comments (0)

This article has no comments yet 😢. Be the first! 🚀🦅

Add comments