Tạo ứng dụng chat đơn giản sử dụng Socket.IO trong Node.js

Hướng dẫn chi tiết cách tạo một ứng dụng chat đơn giản sử dụng Socket.IO trong Node.js, cho phép người dùng gửi và nhận tin nhắn theo thời gian thực.

Bài viết này sẽ hướng dẫn bạn cách tạo một ứng dụng chat đơn giản sử dụng Socket.IO. Bạn sẽ tìm hiểu cách thiết lập server Node.js, tạo giao diện người dùng bằng HTML, và sử dụng Socket.IO để xử lý các kết nối và tin nhắn trong thời gian thực.

Mã Node.js:

server.js

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 connected');

    socket.on('chat message', (msg) => {
        io.emit('chat message', msg);
    });

    socket.on('disconnect', () => {
        console.log('User disconnected');
    });
});

server.listen(3000, () => {
    console.log('Server is running on http://localhost:3000');
});

index.html

<!DOCTYPE html>
<html>
<head>
    <title>Chat App</title>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        const socket = io();

        function sendMessage() {
            const msg = document.getElementById('message').value;
            socket.emit('chat message', msg);
            document.getElementById('message').value = '';
            return false; // Ngăn chặn reload trang
        }

        socket.on('chat message', function(msg) {
            const item = document.createElement('li');
            item.textContent = msg;
            document.getElementById('messages').appendChild(item);
        });
    </script>
</head>
<body>
    <ul id="messages"></ul>
    <form onsubmit="return sendMessage();">
        <input id="message" autocomplete="off" /><button>Gửi</button>
    </form>
</body>
</html>

Giải thích chi tiết từng dòng code:

server.js

  1. import modules: Nhập các mô-đun cần thiết (express, http, socket.io).
  2. create server: Tạo server và kết nối Socket.IO.
  3. setup routes: Cài đặt route cho ứng dụng, trả về file index.html khi truy cập vào trang chính.
  4. handle connections: Khi một người dùng kết nối, in ra thông báo và lắng nghe sự kiện chat message để gửi tin nhắn đến tất cả người dùng.
  5. start server: Khởi động server trên cổng 3000.

index.html

  1. load socket.io: Nhúng thư viện Socket.IO từ server.
  2. send message function: Hàm sendMessage để gửi tin nhắn khi người dùng nhấn nút gửi.
  3. receive messages: Khi nhận được tin nhắn từ server, tạo một phần tử li mới và thêm vào danh sách.

Yêu cầu hệ thống:

  • Node.js phiên bản 12.x hoặc cao hơn
  • NPM (Node Package Manager)

Cách cài đặt các thư viện để chạy được đoạn mã Node.js trên:

  1. Tạo một thư mục mới và chuyển vào đó.
  2. Chạy lệnh sau để khởi tạo dự án Node.js:
    npm init -y
    
  3. Cài đặt các thư viện cần thiết:
    npm install express socket.io
    

Lời khuyên:

  • Thực hành nhiều với Socket.IO để hiểu rõ hơn về cách hoạt động của real-time communication.
  • Bạn có thể mở rộng ứng dụng bằng cách thêm tính năng như thông báo khi người dùng kết nối hoặc ngắt kết nối, và lưu lịch sử trò chuyện.


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Cách UPDATE dữ liệu từ database MySQL bằng Node.js

Hướng dẫn cách sử dụng Prepared Statements trong Node.js để cập nhật dữ liệu trong một bảng của database MySQL một cách an toàn và hiệu quả.
Cách chuyển đổi chuỗi Markdown sang HTML bằng Node.js

Hướng dẫn chi tiết về cách chuyển đổi một chuỗi Markdown sang HTML trong Node.js bằng thư viện `marked`.
Hướng dẫn tăng tốc ứng dụng Node.js bằng ThreadPool

Hướng dẫn chi tiết về cách sử dụng ThreadPool để tăng tốc ứng dụng Node.js, giúp cải thiện hiệu năng và khả năng xử lý đa nhiệm. Bài viết sẽ trình bày cách cấu hình và sử dụng ThreadPool trong Node.js.
Xác thực JSON Web Token (JWT) trong Node.js

Bài viết này sẽ hướng dẫn cách sử dụng JSON Web Token (JWT) để xác thực người dùng trong ứng dụng Node.js. JWT là một cách phổ biến và an toàn để bảo mật API thông qua việc truyền thông tin xác thực giữa máy chủ và người dùng.
Cách gửi dữ liệu tới API bằng Node.js

Bài viết này hướng dẫn cách gửi dữ liệu JSON tới một API bằng cách sử dụng thư viện axios trong Node.js, giúp bạn dễ dàng thực hiện các yêu cầu POST đến dịch vụ web.
Cách INSERT dữ liệu vào database MySQL bằng Node.js

Hướng dẫn cách sử dụng Prepared Statements trong Node.js để chèn dữ liệu vào bảng trong database MySQL một cách an toàn và hiệu quả, với nhiều tham số.
Cách get data JSON từ API bằng Node.js

Bài viết này hướng dẫn cách lấy dữ liệu JSON từ API sử dụng module https trong Node.js, giúp bạn hiểu rõ hơn về cách tương tác với các dịch vụ web.
Cách ghi nội dung vào file Excel bằng Node.js

Hướng dẫn cách ghi dữ liệu vào file Excel bằng Node.js, sử dụng thư viện ExcelJS để tạo và thao tác file Excel một cách hiệu quả.
Sử dụng Selenium trong Node.js để gửi đoạn mã JavaScript vào website trên Chrome

Hướng dẫn cách sử dụng Selenium trong Node.js để tự động hóa việc gửi đoạn mã JavaScript vào một trang web trên trình duyệt Chrome. Bài viết sẽ hướng dẫn từng bước từ cài đặt đến thực thi mã.
Tạo mã Captcha bằng Node.js

Hướng dẫn chi tiết cách tạo mã Captcha trong ứng dụng Node.js giúp bảo vệ trang web của bạn khỏi các bot tự động và cải thiện tính bảo mật.

Đã thêm vào giỏ hàng