текстовый протокол

Workerman определяет текстовый протокол, который называется text. Формат протокола представляет собой данные + символ новой строки, то есть в конце каждого пакета данных добавляется символ новой строки, чтобы обозначить конец пакета.

Например, строки buffer1 и buffer2 соответствуют протоколу text:

// Текст с добавлением символа новой строки
$buffer1 = 'abcdefghijklmn
';
// В php двойные кавычки с \n представляют собой символ новой строки, например, "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";

// Установление сокет-соединения с сервером
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Отправка данных buffer1 с использованием текстового протокола
fwrite($client, $buffer1);
// Отправка данных buffer2 с использованием текстового протокола
fwrite($client, $buffer2);

Текстовый протокол очень прост в использовании. Если разработчикам нужен персонализированный протокол, например для передачи данных с мобильным приложением или для коммуникации с аппаратным обеспечением и т.д., стоит рассмотреть использование текстового протокола, так как разработка и отладка будут очень удобными.

Отладка текстового протокола

Текстовый протокол можно отлаживать с помощью клиента telnet, как показано в следующем примере:

Создайте файл 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();

Запустите php test.php start, результат будет следующим:

php test.php start
Workerman[test.php] запущен в режиме ОТЛАДКИ
----------------------- WORKERMAN -----------------------------
Версия Workerman:3.2.7          Версия PHP:5.4.37
------------------------ WORKERS -------------------------------
Пользователь      работник         слушает                       процессы статус
root              none             myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Нажмите Ctrl-C для выхода. Успешный старт.

Откройте новый терминал и протестируйте с помощью telnet (рекомендуется использовать telnet на системе Linux).

Предположим, что это локальное тестирование:
В терминале выполните telnet 127.0.0.1 5678,
затем введите hi и нажмите Enter.
Вы получите данные 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