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