Protocollo text

Workerman definisce un protocollo chiamato text, la cui struttura è pacchetto di dati + carattere di nuova linea, ossia si aggiunge un carattere di nuova linea alla fine di ogni pacchetto di dati per indicarne la fine.

Ad esempio, le stringhe buffer1 e buffer2 di seguito soddisfano il protocollo text:

// Testo con un ritorno a capo
$buffer1 = 'abcdefghijklmn
';
// In php, le doppie virgolette con \n rappresentano un carattere di nuova linea, ad esempio "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";

// Stabilire una connessione socket con il server
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Inviare i dati buffer1 utilizzando il protocollo text
fwrite($client, $buffer1);
// Inviare i dati buffer2 utilizzando il protocollo text
fwrite($client, $buffer2);

Il protocollo text è molto semplice e facile da usare. Se uno sviluppatore ha bisogno di un proprio protocollo, ad esempio per trasferire dati con un'app mobile o comunicare con hardware, può considerare di utilizzare il protocollo text, poiché lo sviluppo e il debugging sono molto comodi.

Debugging del protocollo text

Il protocollo text può essere testato utilizzando un client telnet, ad esempio nel seguente esempio:

Crea un file 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();

Esegui php test.php start e visualizza come segue

php test.php start
Workerman[test.php] avviato in modalità DEBUG
----------------------- WORKERMAN -----------------------------
Versione di Workerman:3.2.7          Versione PHP:5.4.37
------------------------ WORKERS -------------------------------
utente        worker        ascolta                         processi stato
root          none          myTextProtocol://0.0.0.0:5678   1         [OK]
----------------------------------------------------------------
Premi Ctrl-C per uscire. Avvio riuscito.

Riaprire un terminale e utilizzare telnet per testare (si consiglia di utilizzare telnet su un sistema Linux)

Supponendo sia un test sulla macchina locale,
esecutare nel terminale telnet 127.0.0.1 5678
quindi inserire hi e premere invio
riceverai i dati hello world\n

telnet 127.0.0.1 5678
Provo a connettermi a 127.0.0.1...
Connesso a 127.0.0.1.
Il carattere di escape è '^)'.
hi
hello world