Rôle des Protocoles de Communication
Étant donné que TCP est basé sur des flux, les données de requête envoyées par le client affluent vers le serveur comme un flot d'eau. Lorsque le serveur détecte des données entrantes, il doit vérifier si les données sont complètes, car il se peut qu'il ne reçoive qu'une partie des données d'une requête, voire plusieurs requêtes arrivant en série. Pour déterminer si une requête est entièrement arrivée ou pour séparer les requêtes qui sont arrivées ensemble, il est nécessaire de définir un ensemble de protocoles de communication.
Pourquoi établir un protocole dans Workerman ?
Le développement PHP traditionnel est généralement basé sur le Web et repose principalement sur le protocole HTTP, dont le traitement et l'analyse sont pris en charge par le serveur Web, de sorte que les développeurs ne se préoccupent pas des questions de protocole. Toutefois, lorsque nous devons développer sur la base de protocoles non-HTTP, les développeurs doivent alors considérer les questions relatives aux protocoles.
Protocoles déjà pris en charge par Workerman
Workerman prend actuellement en charge les protocoles HTTP, websocket, text (voir explication en annexe), frame (voir explication en annexe), et ws (voir explication en annexe). Lorsque vous devez communiquer via ces protocoles, vous pouvez les utiliser directement, en spécifiant le protocole lors de l'initialisation du Worker, par exemple :
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// websocket://0.0.0.0:2345 indique d'écouter le port 2345 en utilisant le protocole websocket
$websocket_worker = new Worker('websocket://0.0.0.0:2345');
// protocole text
$text_worker = new Worker('text://0.0.0.0:2346');
// protocole frame
$frame_worker = new Worker('frame://0.0.0.0:2347');
// tcp Worker, basé directement sur le transport socket, sans utiliser aucun protocole de couche application
$tcp_worker = new Worker('tcp://0.0.0.0:2348');
// udp Worker, sans utiliser aucun protocole de couche application
$udp_worker = new Worker('udp://0.0.0.0:2349');
// unix domain Worker, sans utiliser aucun protocole de couche application
$unix_worker = new Worker('unix:///tmp/wm.sock');
Utiliser un protocole de communication personnalisé
Lorsque les protocoles de communication intégrés de Workerman ne répondent pas aux besoins de développement, les développeurs peuvent personnaliser leur propre protocole de communication, les méthodes de personnalisation sont détaillées dans la section suivante.
Remarque :
Workerman inclut un protocole text, dont le format est texte + symbole de nouvelle ligne. Le développement et le débogage du protocole text sont très simples, et il peut être utilisé dans la grande majorité des scénarios de protocoles personnalisés, tout en prenant en charge le débogage telnet. Si les développeurs souhaitent créer leur propre protocole applicatif, ils peuvent directement utiliser le protocole text sans avoir à développer séparément.
Pour des explications sur le protocole text, voir « Annexe - Partie sur le Protocole Text »