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
.
-
Cài đặt Node.js và thư viện Socket.IO:
npm init -y npm install socket.io
-
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();
- 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:
-
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.
-
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:
- Cài đặt Composer: https://getcomposer.org/
- 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.