Protocolo text
Workerman definiu um protocolo chamado text, cujo formato é
pacote de dados + caractere de nova linha, ou seja, cada pacote de dados é finalizado com um caractere de nova linha para indicar o fim do pacote.
Por exemplo, as strings buffer1 e buffer2 abaixo estão em conformidade com o protocolo text:
// Texto com um caractere de nova linha
$buffer1 = 'abcdefghijklmn
';
// Em PHP, o "\n" dentro de aspas duplas representa um caractere de nova linha, por exemplo, "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";
// Estabelecendo conexão socket com o servidor
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Enviando dados do buffer1 seguindo o protocolo text
fwrite($client, $buffer1);
// Enviando dados do buffer2 seguindo o protocolo text
fwrite($client, $buffer2);
O protocolo text é muito simples e fácil de usar. Se o desenvolvedor precisar de um protocolo próprio, como para transmitir dados com um aplicativo móvel ou se comunicar com hardware, pode considerar usar o protocolo text, pois o desenvolvimento e a depuração são bastante convenientes.
Depuração do protocolo text
O protocolo text pode ser depurado usando um cliente telnet, como no exemplo abaixo:
Crie um novo arquivo 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();
Execute php test.php start e a saída será a seguinte
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]
----------------------------------------------------------------
Press Ctrl-C to quit. Start success.
Abra outro terminal e utilize telnet para testar (é recomendável usar telnet em sistemas linux)
Supondo que é um teste na máquina local,
execute telnet 127.0.0.1 5678 no terminal
em seguida, digite hi e pressione enter
você receberá os dados 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