ホームページ  >  記事  >  バックエンド開発  >  ブラウザはどのようにして swoole にアクセスしますか

ブラウザはどのようにして swoole にアクセスしますか

PHPz
PHPzオリジナル
2023-03-29 11:28:45457ブラウズ

ブラウザは 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。