Función del protocolo de comunicación

Debido a que TCP es basado en flujo, los datos de solicitud enviados por el cliente fluyen hacia el servidor como un flujo de agua. Una vez que el servidor detecta que hay datos, debe verificar si los datos están completos, ya que es posible que solo haya llegado una parte de la solicitud al servidor, o incluso que varios solicitudes lleguen juntas al servidor. Para determinar si una solicitud ha llegado completamente o para separar las solicitudes que están unidas, es necesario establecer un conjunto de protocolos de comunicación.

¿Por qué establecer un protocolo en Workerman?

El desarrollo tradicional en PHP se basa principalmente en la web y, en su mayoría, utiliza el protocolo HTTP. El procesamiento y análisis del protocolo HTTP es responsabilidad exclusiva del WebServer, por lo que los desarrolladores no se preocupan por los aspectos del protocolo. Sin embargo, cuando necesitamos desarrollar con protocolos que no son HTTP, los desarrolladores deben considerar los aspectos del protocolo.

Protocolos ya soportados por Workerman

Actualmente, Workerman ya soporta los protocolos HTTP, websocket, text (ver la sección del apéndice) y frame (ver la sección del apéndice), así como el protocolo ws (ver la sección del apéndice). Cuando se necesita comunicarse utilizando estos protocolos, se pueden usar directamente. El método de uso consiste en especificar el protocolo al inicializar el Worker, por ejemplo:

use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';

// websocket://0.0.0.0:2345 indica que se está escuchando en el puerto 2345 con el protocolo websocket
$websocket_worker = new Worker('websocket://0.0.0.0:2345');

// protocolo text
$text_worker = new Worker('text://0.0.0.0:2346');

// protocolo frame
$frame_worker = new Worker('frame://0.0.0.0:2347');

// Worker TCP, que transmite directamente a través de sockets sin usar ningún protocolo de capa de aplicación
$tcp_worker = new Worker('tcp://0.0.0.0:2348');

// Worker UDP, sin usar ningún protocolo de capa de aplicación
$udp_worker = new Worker('udp://0.0.0.0:2349');

// Worker de dominio Unix, sin usar ningún protocolo de capa de aplicación
$unix_worker = new Worker('unix:///tmp/wm.sock');

Uso de un protocolo de comunicación personalizado

Cuando los protocolos de comunicación integrados de Workerman no satisfacen las necesidades de desarrollo, los desarrolladores pueden personalizar su propio protocolo de comunicación. El método de personalización se explicará en la siguiente sección.

Consejo:

Workerman incluye un protocolo de texto que tiene el formato de texto + carácter de nueva línea. El desarrollo y depuración con el protocolo de texto son muy simples y se puede utilizar en la mayoría de los escenarios para protocolos personalizados, además de admitir la depuración con telnet. Si el desarrollador desea crear su propio protocolo de aplicación, puede utilizar directamente el protocolo de texto sin necesidad de desarrollar uno por separado.

Las instrucciones del protocolo de texto se pueden consultar en el "Apéndice - Sección del Protocolo de Texto".