O Papel do Protocolo de Comunicação
Como o TCP é baseado em fluxo, os dados do pedido enviados pelo cliente fluem como água para o servidor. Quando o servidor detecta que há dados chegando, ele deve verificar se os dados estão completos, pois pode ser que apenas uma parte dos dados do pedido tenha chegado ao servidor, ou que múltiplos pedidos estejam conectados e tenham chegado ao servidor. Para determinar se o pedido chegou completamente ou para separar os pedidos que chegaram juntos, é necessário estabelecer um conjunto de protocolos de comunicação.
Por Que Estabelecer Protocolos no Workerman?
O desenvolvimento tradicional em PHP é baseado na web, basicamente utilizando o protocolo HTTP, cuja análise e processamento são realizados exclusivamente pelo WebServer, de modo que os desenvolvedores não precisam se preocupar com questões de protocolo. No entanto, quando precisamos desenvolver com protocolos que não sejam HTTP, os desenvolvedores precisam considerar questões relacionadas ao protocolo.
Protocolos Já Suportados pelo Workerman
Atualmente, o Workerman já suporta os protocolos HTTP, websocket, text (veja as explicações no apêndice), frame (veja as explicações no apêndice) e ws (veja as explicações no apêndice). Quando a comunicação precisa ser baseada nesses protocolos, pode-se usá-los diretamente, especificando o protocolo ao inicializar o Worker, por exemplo:
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// websocket://0.0.0.0:2345 indica que está escutando a porta 2345 com o 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, transmitindo diretamente por socket, sem usar nenhum protocolo de camada de aplicação
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// Worker udp, sem usar nenhum protocolo de camada de aplicação
$udp_worker = new Worker('udp://0.0.0.0:2349');
// Worker de domínio unix, sem usar nenhum protocolo de camada de aplicação
$unix_worker = new Worker('unix:///tmp/wm.sock');
Usando Protocolos de Comunicação Personalizados
Quando os protocolos de comunicação embutidos no Workerman não atendem às necessidades do desenvolvimento, os desenvolvedores podem personalizar seus próprios protocolos de comunicação. O método de personalização pode ser encontrado na seção a seguir.
Dica:
O Workerman inclui um protocolo text, cuja formatação é texto + caractere de nova linha. O desenvolvimento e depuração do protocolo text são muito simples e podem ser usados na grande maioria dos cenários de protocolos personalizados, além de suportar depuração via telnet. Se os desenvolvedores quiserem criar seu próprio protocolo de aplicação, podem simplesmente usar o protocolo text, sem a necessidade de desenvolver separadamente.
Para mais informações sobre o protocolo text, consulte a "Seção de Apêndice sobre o Protocolo Text".