TCP はストリームベースであるため、クライアントから送信されたリクエストデータは水の流れのようにサーバーに流れ込み、サーバーはデータの到着を検出した後、データが正しいかどうかを確認する必要があります。 1 つのリクエストのデータの一部のみがサーバーに到達する場合や、複数のリクエストがまとめてサーバーに到達する場合があるためです。
すべてのリクエストが到着したかどうかを確認したり、接続されている複数のリクエストからリクエストを分離したりするには、一連の通信プロトコルが必要です。
WorkerMan で合意を作成する必要があるのはなぜですか?
従来の PHP 開発は Web に基づいており、基本的に HTTP プロトコルを使用します。HTTP プロトコルの解析と処理は Web サーバーによってのみ行われるため、開発者はプロトコルを気にしません。 . . (推奨学習: workerman チュートリアル )
qian しかし、非 HTTP プロトコルに基づいて開発する必要がある場合、開発者は合意を考慮する必要があります。
WorkerMan でサポートされるプロトコル
WorkerMan は現在、HTTP、WebSocket、テキスト プロトコル (付録の説明を参照)、フレーム プロトコル (付録の説明を参照)、WS プロトコル (付録を参照) をサポートしています。これらのプロトコルに基づいて通信する必要がある場合は、これを直接使用できます。これを使用するには、ワーカーの初期化時にプロトコルを指定します (
use Workerman\Worker; // websocket://0.0.0.0:2345 表明用websocket协议监听2345端口 $websocket_worker = new Worker('websocket://0.0.0.0:2345'); // text协议 $text_worker = new Worker('text://0.0.0.0:2346'); // frame协议 $frame_worker = new Worker('frame://0.0.0.0:2347'); // tcp Worker,直接基于socket传输,不使用任何应用层协议 $tcp_worker = new Worker('tcp://0.0.0.0:2348'); // udp Worker,不使用任何应用层协议 $udp_worker = new Worker('udp://0.0.0.0:2349'); // unix domain Worker,不使用任何应用层协议 $unix_worker = new Worker('unix:///tmp/wm.sock');
以上がなぜ WorkerMan でプロトコルを作成する必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。