server.php #ここでは、ローカル ポート 9501 をリッスンする TCP サーバーが作成されます。 そのロジックは非常に単純で、クライアントの Socket がネットワーク経由で hello 文字列を送信すると、サーバーは Server: hello 文字列で応答します。
サーバーは非同期サーバーであるため、プログラムはイベントをリッスンすることによって作成されます。対応するイベントが発生すると、基礎となる層が指定された関数を積極的にコールバックします。たとえば、新しい TCP 接続が到着すると、onConnect イベント コールバックが実行され、接続がサーバーにデータを送信すると、onReceive 関数がコールバックされます。UDP サーバーは TCP サーバーとは異なり、接続という概念がありません。
サーバーを起動した後、クライアントは接続せずにサーバーによって監視されている 9502 ポートにデータ パケットを直接送信できます。対応するイベントは onPacket です。 $clientInfo は、クライアントの IP やポートなどを含むクライアント関連の情報、配列です。 $server->sendto メソッドを呼び出して、クライアントにデータを送信します。HTTP サーバー リクエストの応答に注意するだけでよいため、onRequest イベントを 1 つだけリッスンする必要があります。
このイベントは、新しい HTTP リクエストが到着するとトリガーされます。イベント コールバック関数には 2 つのパラメータがあり、1 つは $request オブジェクトで、GET/POST リクエスト データなどのリクエスト関連情報が含まれます。 もう1つはレスポンスオブジェクトで、レスポンスオブジェクトを操作することでリクエストに対するレスポンスが完了します。 $response->end() メソッドは、HTML コンテンツの一部を出力してリクエストを終了することを意味します。0.0.0.0 は、すべての IP アドレスを監視することを意味します。サーバーは、127.0.0.1 ローカル ループバック IP、192.168.1.100 LAN IP、210.127.20.2 外部ネットワーク IP など、複数の IP を同時に持つことができます。 IP9501 のリスニング ポートを指定します。ポートが占有されている場合、プログラムは致命的なエラーをスローし、実行を中断します。
WebSocket サーバーは、HTTP サーバー上に構築された長時間接続サーバーであり、クライアントはまずサーバーと握手するために Http リクエストを送信します。
ハンドシェイクが成功すると、onOpen イベントがトリガーされ、接続の準備ができたことを示します。$request オブジェクトは、HTTP ハンドシェイクに関連する情報を含む onOpen 関数で取得できます。 GETパラメータ、Cookie、HTTPヘッダー情報など。接続が確立されると、クライアントとサーバーは双方向で通信できるようになります。
クライアントがサーバーに情報を送信すると、サーバーは onMessage イベント コールバックをトリガーします。サーバーは $server->push() を呼び出して、クライアントにメッセージを送信できます ($fd 識別子を使用)。サーバーは、WebSocket ハンドシェイクを手動で処理するために onHandShake イベント コールバックをセットアップできます。 swoole_http_server は、HTTP のサポートが組み込まれた swoole_server のサブクラスです。swoole_websocket_server は、WebSocket のサポートが組み込まれた swoole_http_server のサブクラスです。以上がさまざまな swoole サーバーの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。