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

Hướng dẫn từng bước để tạo ứng dụng chat đơn giản bằng Socket.IO trong PHP, giúp bạn hiểu rõ cách sử dụng WebSocket để tạo ra trải nghiệm giao tiếp thời gian thực.

Bài viết này sẽ hướng dẫn bạn cách xây dựng một ứng dụng chat đơn giản sử dụng Socket.IO trong PHP. Chúng ta sẽ sử dụng Socket.IO để xử lý giao tiếp thời gian thực giữa máy chủ và khách hàng, tạo ra một trải nghiệm chat mượt mà và nhanh chóng.

Mã PHP:

Cài đặt môi trường: Trước khi bắt đầu, bạn cần cài đặt Node.js và Composer. Sau đó, tạo một thư mục dự án mới và sử dụng Composer để cài đặt thư viện socket.io.

  1. Cài đặt Node.js và thư viện Socket.IO:

    npm init -y
    npm install socket.io
    
  2. Tạo file server.php:

    <?php
    require 'vendor/autoload.php';
    
    use Ratchet\MessageComponentInterface;
    use Ratchet\ConnectionInterface;
    
    class Chat implements MessageComponentInterface {
        protected $clients;
    
        public function __construct() {
            $this->clients = new \SplObjectStorage;
        }
    
        public function onOpen(ConnectionInterface $conn) {
            $this->clients->attach($conn);
        }
    
        public function onMessage(ConnectionInterface $from, $msg) {
            foreach ($this->clients as $client) {
                if ($from !== $client) {
                    $client->send($msg);
                }
            }
        }
    
        public function onClose(ConnectionInterface $conn) {
            $this->clients->detach($conn);
        }
    
        public function onError(ConnectionInterface $conn, \Exception $e) {
            $conn->close();
        }
    }
    
    $server = IoServer::factory(new HttpServer(new WsServer(new Chat())), 8080);
    $server->run();
    
  3. Tạo file index.html:
    <!DOCTYPE html>
    <html>
    <head>
        <title>Chat App</title>
        <script src="/socket.io/socket.io.js"></script>
    </head>
    <body>
        <h1>Chat Room</h1>
        <input id="message" autocomplete="off" /><button id="send">Send</button>
        <ul id="messages"></ul>
    
        <script>
            var socket = io.connect('http://localhost:8080');
    
            document.getElementById('send').onclick = function() {
                var message = document.getElementById('message').value;
                socket.emit('chat message', message);
                document.getElementById('message').value = '';
            };
    
            socket.on('chat message', function(msg) {
                var item = document.createElement('li');
                item.textContent = msg;
                document.getElementById('messages').appendChild(item);
            });
        </script>
    </body>
    </html>
    

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

  1. server.php:

    • require 'vendor/autoload.php';: Tải các thư viện cần thiết.
    • Chat class: Lớp xử lý các kết nối và thông điệp.
    • onOpen: Lưu kết nối vào danh sách.
    • onMessage: Phát thông điệp đến tất cả các kết nối ngoại trừ kết nối gửi thông điệp.
    • onClose: Xóa kết nối khỏi danh sách khi kết thúc.
    • onError: Đóng kết nối nếu có lỗi.
    • IoServer: Khởi tạo máy chủ WebSocket lắng nghe trên cổng 8080.
  2. index.html:

    • socket = io.connect(...): Kết nối đến máy chủ WebSocket.
    • onclick: Gửi thông điệp khi nhấn nút gửi.
    • socket.on: Nhận và hiển thị thông điệp từ máy chủ.

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

  • PHP 7.0 trở lên
  • Node.js
  • Thư viện Socket.IO

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

  1. Cài đặt Composer: https://getcomposer.org/
  2. Tạo thư mục dự án và chạy:
    composer require cboden/ratchet
    

Lời khuyên:

  • Hãy đảm bảo bạn đã cài đặt tất cả các phần mềm cần thiết.
  • Thử nghiệm với việc mở nhiều tab trong trình duyệt để thấy tính năng chat hoạt động như thế nào.
Tags: PHP, Socket.IO


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

Hướng dẫn upload nhiều hình ảnh trong PHP

Hướng dẫn chi tiết cách upload nhiều hình ảnh cùng lúc trong PHP, bao gồm xử lý file tải lên, kiểm tra định dạng và lưu trữ trên server.
Ví dụ về lập trình hướng đối tượng (OOP) trong PHP

Hướng dẫn ví dụ cơ bản về lập trình hướng đối tượng (OOP) trong PHP, giải thích cách sử dụng các class và object để tổ chức mã nguồn theo phương pháp OOP.
Lấy nội dung từ database MySQL bằng PHP

Hướng dẫn cách lấy nội dung từ database MySQL sử dụng PHP. Bao gồm mã nguồn và giải thích chi tiết từng bước để kết nối và truy vấn cơ sở dữ liệu MySQL.
Cách loại bỏ dấu câu từ chuỗi trong PHP

Hướng dẫn cách loại bỏ dấu câu từ một chuỗi trong PHP. Bài viết này giải thích cách sử dụng hàm `preg_replace` để xóa bỏ các ký tự dấu câu khỏi chuỗi.
Cách chuyển chuỗi Markdown sang HTML bằng PHP

Hướng dẫn cách chuyển đổi chuỗi Markdown sang HTML trong PHP bằng cách sử dụng thư viện `Parsedown`, giúp bạn hiển thị nội dung Markdown một cách hiệu quả trên trang web của mình.
Cập nhật dữ liệu trong MySQL bằng PHP sử dụng Prepared Statements để tránh SQL Injection

Hướng dẫn cách sử dụng Prepared Statements trong PHP để cập nhật dữ liệu trong MySQL một cách an toàn và hiệu quả. Mã PHP này giúp tránh các lỗ hổng SQL Injection khi thao tác với cơ sở dữ liệu.
Cách trích xuất số từ chuỗi trong PHP

Bài viết này hướng dẫn cách trích xuất các số từ chuỗi trong PHP bằng nhiều cách khác nhau như sử dụng regex (biểu thức chính quy), các hàm PHP có sẵn như `preg_match_all`, `filter_var`, và các phương pháp thủ công.
Phân trang kết quả truy vấn MySQL bằng PHP

Hướng dẫn cách phân trang kết quả truy vấn từ MySQL bằng PHP. Mã PHP này giúp chia nhỏ dữ liệu từ cơ sở dữ liệu MySQL thành các trang riêng biệt để hiển thị hiệu quả hơn.
Ví dụ về Factory Pattern trong PHP

Hướng dẫn về Factory Pattern trong PHP với ví dụ cụ thể giúp bạn hiểu rõ cách sử dụng mẫu thiết kế này trong lập trình hướng đối tượng.
Cách ghi nội dung vào file Excel bằng PHP

Hướng dẫn chi tiết cách ghi nội dung vào file Excel bằng PHP bằng cách sử dụng thư viện PHPExcel hoặc thư viện mới hơn là PhpSpreadsheet.

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