ブラウザは swoole にどのようにアクセスしますか
はじめに
Swoole は、PHP 言語で書かれた高性能の非同期ネットワーク通信フレームワークです。 Swoole を使用すると、特に WebSocket、HTTP、TCP、UDP およびその他のプロトコルの開発に適した、同時実行性の高いネットワーク アプリケーションを簡単に構築できます。
Swoole を使用する過程で、ブラウザーを通じて Swoole によって作成されたネットワーク アプリケーションにアクセスする必要がある場合があります。この記事では、開発中のデバッグとテストを容易にするために、ブラウザーが Swoole にアクセスする方法を紹介します。
1. HTTP プロトコル
まず、HTTP プロトコルを理解する必要があります。 HTTP (ハイパーテキスト転送プロトコル) は、ハイパーメディア ドキュメントを送信するためのアプリケーション層プロトコルで、通常は TCP プロトコルに基づいています。
HTTP プロトコルはクライアントサーバー モードを採用しており、クライアントがリクエストを開始し、サーバーが応答を返します。 HTTP リクエストはリクエスト ヘッダーとリクエスト ボディで構成され、レスポンスはレスポンス ヘッダーとレスポンス ボディで構成されます。リクエスト ヘッダーとレスポンス ヘッダーは、キーと値のペアの形式で表されます。例:
リクエスト ヘッダー:
GET /index.html HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:88.0) Gecko/20100101 Firefox/88.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate, br Connection: keep-alive Upgrade-Insecure-Requests: 1
レスポンス ヘッダー:
HTTP/1.1 200 OK Date: Tue, 22 Jun 2021 06:59:43 GMT Server: Apache/2.4.41 (Ubuntu) Last-Modified: Mon, 21 Jun 2021 01:53:04 GMT ETag: "2eab-5c4965a6870bb" Accept-Ranges: bytes Content-Length: 11947 Vary: Accept-Encoding Content-Type: text/html
2. Swoole HTTP サーバー
Swoole は、HTTP プロトコルに基づいたネットワーク アプリケーションを簡単に構築するための HTTP サーバーを提供します。 Swoole HTTP サーバーを使用すると、ブラウザーが Swoole で作成された Web アプリケーションにアクセスできるようになります。簡単な例を次に示します:
<?php $http = new Swoole\Http\Server("0.0.0.0", 9501); $http->on("start", function ($server) { echo "Swoole http server is started at http://127.0.0.1:9501\n"; }); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello, World!\n"); }); $http->start();
この例では、Swoole HTTP サーバーを作成し、ポート 9501 で待機します。ブラウザがこのサーバーにアクセスすると、単純なテキスト文字列「Hello, World!」が返されます。
3. Swoole HTTP サーバーへのアクセス
次に、ブラウザーで Swoole HTTP サーバーにアクセスする方法について説明します。 Swoole HTTP サーバーがローカル ホストのポート 9501 で実行されていると仮定すると、次の URL を使用してサーバーにアクセスできます:
http://127.0.0.1:9501/
ブラウザに URL を入力すると、テキスト文字列「Hello,」が表示されます。 " ブラウザによって返されました。ワールド!"。
Swoole HTTP サーバーでは、$request オブジェクトを使用して、クライアントから送信されたリクエスト情報を取得できます。例:
$http->on("request", function ($request, $response) { $message = "Method: " . $request->server["request_method"] . "\n"; $message .= "URI: " . $request->server["request_uri"] . "\n"; $message .= "Headers: " . json_encode($request->header) . "\n"; $message .= "Content: " . $request->rawContent() . "\n"; $response->header("Content-Type", "text/plain"); $response->end($message); });
この例では、$request オブジェクトを使用してリクエストを取得します。リクエスト メソッドと URI、リクエスト ヘッダー、リクエスト本文を含む情報。これにより、ブラウザから送信されるリクエスト情報が分かりやすくなります。
4. WebSocket プロトコル
Swoole は、HTTP プロトコルに加えて、WebSocket プロトコルもサポートしています。 WebSocket プロトコルは、TCP プロトコルに基づいたプロトコルであり、双方向通信を実現でき、リアルタイム通信シナリオに非常に適しています。 Swoole は、PHP で WebSocket 機能を簡単に実装するための WebSocket サーバーを提供します。
これは簡単な例です:
<?php $server = new Swoole\WebSocket\Server("0.0.0.0", 9501); $server->on("start", function ($server) { echo "Swoole WebSocket server is started at ws://127.0.0.1:9501\n"; }); $server->on('open', function (Swoole\WebSocket\Server $server, $request) { echo "WebSocket connection opened: {$request->fd}\n"; }); $server->on('message', function (Swoole\WebSocket\Server $server, $frame) { echo "Received message: {$frame->data}\n"; $server->push($frame->fd, "Received message: {$frame->data}"); }); $server->on('close', function (Swoole\WebSocket\Server $server, $fd) { echo "WebSocket connection closed: {$fd}\n"; }); $server->start();
この例では、Swoole WebSocket サーバーを作成し、ポート 9501 で待機します。クライアントがメッセージを送信すると、サーバーはメッセージを変更せずにクライアントに返します。
5. Swoole WebSocket サーバーへのアクセス
ブラウザで Swoole WebSocket サーバーにアクセスするのは少し複雑です。 WebSocket プロトコルは HTTP プロトコルをベースにしていないため、HTTP サーバーにアクセスするような URL を使用することはできません。
JavaScript WebSocket API を使用して、ブラウザーで Swoole WebSocket サーバーと通信できます。 JavaScript WebSocket API を使用した通信の例を次に示します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket Test</title> </head> <body> <input type="text" id="message" placeholder="Type your message here"> <button onclick="sendMessage()">Send Message</button> <ul id="messages"></ul> <script> var socket = new WebSocket("ws://127.0.0.1:9501/"); socket.onopen = function(event) { console.log("WebSocket is open now."); }; socket.onmessage = function(event) { var messages = document.getElementById("messages"); var message = document.createElement("li"); var content = document.createTextNode(event.data); message.appendChild(content); messages.appendChild(message); }; function sendMessage() { var input = document.getElementById("message"); var message = input.value; socket.send(message); input.value = ""; } </script> </body> </html>
この例では、WebSocket オブジェクトを作成し、Swoole WebSocket サーバーに接続します。ユーザーがテキスト ボックスにメッセージを入力し、[送信] ボタンをクリックすると、JavaScript コードがメッセージをサーバーに送信します。サーバーはメッセージを受信後、そのままクライアントにメッセージを返し、クライアントはメッセージ一覧にメッセージを表示します。
6. 概要
この記事では、HTTP プロトコルや WebSocket プロトコルなど、Swoole によって作成されたネットワーク アプリケーションにブラウザがどのようにアクセスするかを紹介します。この記事の導入を通じて、ブラウザーで Swoole アプリケーションをデバッグおよびテストする方法のスキルを習得したと思います。
以上がブラウザはどのようにして swoole にアクセスしますかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。