Funzione del protocollo di comunicazione
Poiché TCP è basato su flusso, i dati della richiesta inviati dal client fluiscono verso il server come un flusso d'acqua. Quando il server rileva l'arrivo di dati, dovrebbe controllare se i dati sono completi, poiché potrebbero arrivare solo parti della richiesta o addirittura più richieste concatenate. Per determinare se una richiesta è completamente arrivata o per separare le richieste concatenate, è necessario stabilire un protocollo di comunicazione.
Perché è necessario definire un protocollo in Workerman?
Lo sviluppo PHP tradizionale è basato sul Web e fondamentalmente utilizza il protocollo HTTP. La gestione dell'analisi del protocollo HTTP è di competenza esclusiva del WebServer, quindi gli sviluppatori non si preoccupano di questioni relative al protocollo. Tuttavia, quando è necessario sviluppare basandosi su protocolli non HTTP, gli sviluppatori devono occuparsi di queste questioni.
I protocolli già supportati da Workerman
Workerman supporta attualmente i protocolli HTTP, websocket, text (vedere la descrizione in appendice), frame (vedere la descrizione in appendice) e ws (vedere la descrizione in appendice). Quando è necessario comunicare utilizzando questi protocolli, è possibile farlo direttamente specificando il protocollo durante l'inizializzazione del Worker, ad esempio:
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// websocket://0.0.0.0:2345 indica di ascoltare la porta 2345 utilizzando il protocollo websocket
$websocket_worker = new Worker('websocket://0.0.0.0:2345');
// protocollo text
$text_worker = new Worker('text://0.0.0.0:2346');
// protocollo frame
$frame_worker = new Worker('frame://0.0.0.0:2347');
// Worker tcp, basato direttamente sul trasferimento socket, senza utilizzare alcun protocollo di livello applicativo
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// Worker udp, senza utilizzare alcun protocollo di livello applicativo
$udp_worker = new Worker('udp://0.0.0.0:2349');
// Worker per dominio unix, senza utilizzare alcun protocollo di livello applicativo
$unix_worker = new Worker('unix:///tmp/wm.sock');
Utilizzo di un protocollo di comunicazione personalizzato
Quando i protocolli di comunicazione forniti da Workerman non soddisfano le necessità di sviluppo, gli sviluppatori possono personalizzare il proprio protocollo di comunicazione, il metodo di personalizzazione è descritto nella sezione successiva.
Nota:
Workerman include un protocollo text, il cui formato è testo + carattere di nuova riga. Lo sviluppo e il debug del protocollo text sono molto semplici e possono essere utilizzati nella stragrande maggioranza degli scenari di protocollo personalizzati, supportando anche il debug con telnet. Se gli sviluppatori desiderano sviluppare il proprio protocollo applicativo, possono utilizzare direttamente il protocollo text senza dover sviluppare separatamente.
Per ulteriori dettagli sul protocollo text, fare riferimento a “Appendice: Sezione sul protocollo Text”.