Роль коммуникационного протокола
Поскольку TCP основан на потоке, данные запроса, отправленные клиентом, поступают на сервер как поток воды, и после обнаружения прихода данных сервер должен проверить, являются ли данные полными, поскольку могут быть получены только часть данных запроса, или даже несколько запросов, объединенных в один поток. Для определения того, пришли ли все данные запроса или для отделения запросов из нескольких объединенных запросов требуется установить коммуникационный протокол.
Почему в Workerman нужно устанавливать протокол?
Традиционная разработка на PHP основана на веб-технологиях и в основном использует протокол HTTP, разбор и обработка которого полностью возлагается на веб-сервер, поэтому разработчику не нужно заботиться о протоколе. Однако, когда требуется разработка на базе не HTTP протокола, разработчику уже придется уделять внимание протоколу.
Поддерживаемые протоколы Workerman
В настоящее время Workerman поддерживает протоколы HTTP, websocket, текстовый (см. приложение), фреймовый (см. приложение) и ws (см. приложение). При необходимости использования этих протоколов для коммуникации можно использовать их непосредственно следующим образом: при инициализации Worker укажите протокол, например:
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// websocket://0.0.0.0:2345 указывает использовать протокол websocket для прослушивания порта 2345
$websocket_worker = new Worker('websocket://0.0.0.0:2345');
// Текстовый протокол
$text_worker = new Worker('text://0.0.0.0:2346');
// Фреймовый протокол
$frame_worker = new Worker('frame://0.0.0.0:2347');
// tcp Worker, напрямую основанный на передаче сокетов, без использования прикладного уровня протокола
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// udp Worker, без использования прикладного уровня протокола
$udp_worker = new Worker('udp://0.0.0.0:2349');
// Unix domain Worker, без использования прикладного уровня протокола
$unix_worker = new Worker('unix:///tmp/wm.sock');
Использование собственного коммуникационного протокола
Когда встроенных в Workerman протоколов недостаточно для удовлетворения потребностей разработки, разработчик может настроить собственный коммуникационный протокол, методы настройки протокола описаны в следующем разделе.
Подсказка:
Workerman встроил текстовый протокол, формат протокола - текст + символ новой строки. Разработка и отладка текстового протокола очень просты и могут использоваться в большинстве сценариев собственного протокола, а также поддерживается отладка через telnet. Если разработчику требуется разработать собственный протокол приложения, можно использовать текстовый протокол, не создавая новый.
См. приложение для описания текстового протокола.