giao thức text

Workerman định nghĩa một giao thức gọi là text, định dạng giao thức là dữ liệu + ký tự xuống dòng, có nghĩa là mỗi gói dữ liệu sẽ được kết thúc bằng một ký tự xuống dòng.

Ví dụ dưới đây về chuỗi buffer1 và buffer2 tuân thủ giao thức text:

// Văn bản thêm một ký tự xuống dòng
$buffer1 = 'abcdefghijklmn
';
// Trong php, dấu nháy đôi có chứa \n đại diện cho một ký tự xuống dòng, chẳng hạn như "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";

// Thiết lập kết nối socket với server
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Gửi dữ liệu buffer1 theo giao thức text
fwrite($client, $buffer1);
// Gửi dữ liệu buffer2 theo giao thức text
fwrite($client, $buffer2);

Giao thức text rất đơn giản và dễ sử dụng. Nếu các nhà phát triển cần một giao thức riêng của mình, chẳng hạn như truyền dữ liệu với ứng dụng di động hoặc giao tiếp với phần cứng, họ có thể xem xét sử dụng giao thức text, việc phát triển và gỡ lỗi rất tiện lợi.

Gỡ lỗi giao thức text

Giao thức text có thể được gỡ lỗi bằng cách sử dụng khách hàng telnet, ví dụ dưới đây:

Tạo một tệp test.php

require_once __DIR__ . '/Workerman/Autoloader.php';
use Workerman\Worker;

$text_worker = new Worker("text://0.0.0.0:5678");

$text_worker->onMessage =  function($connection, $data)
{
    var_dump($data);
    $connection->send("hello world");
};

Worker::runAll();

Thực thi php test.php start sẽ hiển thị như sau

php test.php start
Workerman[test.php] start in DEBUG mode
----------------------- WORKERMAN -----------------------------
Workerman version:3.2.7          PHP version:5.4.37
------------------------ WORKERS -------------------------------
user          worker        listen                         processes status
root          none          myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Nhấn Ctrl-C để thoát. Khởi động thành công.

Mở lại một terminal, sử dụng telnet để kiểm tra (khuyên dùng telnet của hệ thống linux)

Giả sử đây là bài kiểm tra trên máy tính của bạn,
terminal thực hiện telnet 127.0.0.1 5678
sau đó nhập hi và nhấn Enter
sẽ nhận được dữ liệu hello world\n

telnet 127.0.0.1 5678
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hi
hello world