Protocollo text
Workerman definisce un protocollo di testo chiamato "text", il formato del protocollo è pacchetto di dati + carattere di nuova riga
, cioè aggiungere un carattere di nuova riga alla fine di ogni pacchetto di dati per indicarne la fine.
Ad esempio, le stringhe buffer1 e buffer2 seguenti sono conformi al protocollo di testo:
// Testo più un ritorno a capo
$buffer1 = 'abcdefghijklmn
';
// In PHP, "\n" tra virgolette doppie rappresenta un carattere di nuova riga, ad esempio "\n"
$buffer2 = '{"type":"say", "content":"hello"}'."\n";
// Connettersi al server tramite socket
$client = stream_socket_client('tcp://127.0.0.1:5678');
// Invia i dati del buffer1 utilizzando il protocollo di testo
fwrite($client, $buffer1);
// Invia i dati del buffer2 utilizzando il protocollo di testo
fwrite($client, $buffer2);
Il protocollo di testo è molto semplice da usare. Se gli sviluppatori hanno bisogno di un protocollo personalizzato, ad esempio per trasferire dati con un'applicazione mobile o comunicare con l'hardware, possono considerare l'utilizzo del protocollo di testo, che è molto comodo sia per lo sviluppo che per il debug.
Debug del protocollo di testo
Il protocollo di testo può essere debuggato utilizzando un client telnet, ad esempio:
Creare 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();
Eseguire php test.php start
mostrerà quanto segue
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.
Aprire una nuova console e provare con telnet (si consiglia di utilizzare telnet di un sistema Linux)
Supponendo che il test sia locale,
Eseguire telnet 127.0.0.1 5678
Quindi inserire "hi" e premere Invio
Si riceverà "hello world\n" come risposta.
telnet 127.0.0.1 5678
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hi
hello world