Quy trình cơ bản
(Lấy ví dụ về một dịch vụ máy chủ Websocket trò chuyện đơn giản)
1. Tạo thư mục dự án ở bất kỳ vị trí nào
Ví dụ SimpleChat/
Đi vào thư mục và thực hiện composer require workerman/workerman
2. Nhập vendor/autoload.php (được tạo ra sau khi cài đặt qua composer)
Tạo file start.php, nhập vendor/autoload.php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
3. Chọn giao thức
Ở đây chúng ta chọn giao thức Text (một giao thức tùy chỉnh trong Workerman, định dạng là văn bản + xuống dòng)
(Hiện tại Workerman hỗ trợ HTTP, Websocket, và giao thức Text. Nếu cần sử dụng giao thức khác, vui lòng tham khảo chương giao thức để phát triển giao thức của riêng bạn)
4. Viết script khởi động điểm vào theo nhu cầu
Ví dụ bên dưới là một file điểm vào trò chuyện đơn giản.
SimpleChat/start.php
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
$global_uid = 0;
// Khi client kết nối, phân bổ uid, lưu kết nối và thông báo cho tất cả client
function handle_connection($connection)
{
global $text_worker, $global_uid;
// Phân bổ một uid cho kết nối này
$connection->uid = ++$global_uid;
}
// Khi client gửi tin nhắn, chuyển tiếp cho tất cả mọi người
function handle_message(TcpConnection $connection, $data)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{
$conn->send("user[{$connection->uid}] đã nói: $data");
}
}
// Khi client ngắt kết nối, phát tin cho tất cả các client
function handle_close($connection)
{
global $text_worker;
foreach($text_worker->connections as $conn)
{
$conn->send("user[{$connection->uid}] đã đăng xuất");
}
}
// Tạo một Worker với giao thức văn bản lắng nghe cổng 2347
$text_worker = new Worker("text://0.0.0.0:2347");
// Chỉ khởi động 1 tiến trình, việc này giúp dễ dàng truyền dữ liệu giữa các client
$text_worker->count = 1;
$text_worker->onConnect = 'handle_connection';
$text_worker->onMessage = 'handle_message';
$text_worker->onClose = 'handle_close';
Worker::runAll();
5. Kiểm tra
Giao thức Text có thể được kiểm tra bằng lệnh telnet
telnet 127.0.0.1 2347