Protocolo text
Workerman define un protocolo de texto llamado text, cuyo formato es
paquete de datos + carácter de nueva línea, es decir, al final de cada paquete de datos se le añade un carácter de nueva línea para indicar el final del paquete.
Por ejemplo, las cadenas buffer1 y buffer2 a continuación cumplen con el protocolo text:
// Texto con un salto de línea
$buffer1 = 'abcdefghijklmn
';
// En php, el \n dentro de comillas dobles representa un salto de línea, por ejemplo, "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";
// Estableciendo una conexión socket con el servidor
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Enviando datos de buffer1 utilizando el protocolo text
fwrite($client, $buffer1);
// Enviando datos de buffer2 utilizando el protocolo text
fwrite($client, $buffer2);
El protocolo text es muy simple y fácil de usar. Si los desarrolladores necesitan un protocolo propio, por ejemplo, para la transmisión de datos con una aplicación móvil o comunicación con hardware, pueden considerar usar el protocolo text, ya que es muy conveniente para el desarrollo y la depuración.
Depuración del protocolo text
El protocolo text se puede depurar utilizando un cliente telnet, como en el siguiente ejemplo:
Cree el archivo 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();
Ejecute php test.php start y verá lo siguiente:
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 otra terminal y utilice telnet para probar (se recomienda usar telnet en sistemas linux).
Supongamos que es una prueba en la máquina local,
en la terminal ejecute telnet 127.0.0.1 5678
y luego ingrese hi y presione enter
recibirá los datos 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