Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greift der Browser auf Swoole zu?

Wie greift der Browser auf Swoole zu?

PHPz
PHPzOriginal
2023-03-29 11:28:45419Durchsuche

Wie der Browser auf Swoole zugreift

Vorwort

Swoole ist ein leistungsstarkes, asynchrones Netzwerkkommunikations-Framework, das in der PHP-Sprache geschrieben ist. Mit Swoole können auf einfache Weise hochgradig gleichzeitige Netzwerkanwendungen erstellt werden, die sich besonders für die Entwicklung von WebSocket-, HTTP-, TCP-, UDP- und anderen Protokollen eignen.

Bei der Verwendung von Swoole müssen Sie manchmal über den Browser auf die von Swoole geschriebene Netzwerkanwendung zugreifen. In diesem Artikel wird erläutert, wie der Browser auf Swoole zugreift, um das Debuggen und Testen während der Entwicklung zu erleichtern.

1. HTTP-Protokoll

Zuerst müssen wir das HTTP-Protokoll verstehen. HTTP (Hypertext Transfer Protocol) ist ein Protokoll der Anwendungsschicht zur Übertragung von Hypermedia-Dokumenten, das normalerweise auf dem TCP-Protokoll basiert.

HTTP-Protokoll verwendet den Client-Server-Modus. Der Client initiiert eine Anfrage und der Server gibt eine Antwort zurück. HTTP-Anfragen bestehen aus Anforderungsheadern und Anforderungstexten, und Antworten bestehen aus Antwortheadern und Antworttexten. Anforderungsheader und Antwortheader werden in Form von Schlüssel-Wert-Paaren ausgedrückt, zum Beispiel:

Anforderungsheader:

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

Antwortheader:

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-Server

Swoole bietet einen HTTP-Server, der problemlos ein Web erstellen kann Anwendungen, die auf dem HTTP-Protokoll basieren. Durch die Verwendung des Swoole-HTTP-Servers können Browser auf in Swoole geschriebene Webanwendungen zugreifen. Hier ist ein einfaches Beispiel:

<?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();

In diesem Beispiel erstellen wir einen Swoole-HTTP-Server und überwachen Port 9501. Wenn ein Browser auf diesen Server zugreift, wird eine einfache Textzeichenfolge „Hello, World!“ zurückgegeben.

3. Greifen Sie auf den Swoole-HTTP-Server zu

Als nächstes besprechen wir, wie Sie im Browser auf den Swoole-HTTP-Server zugreifen. Vorausgesetzt, dass der Swoole-HTTP-Server auf Port 9501 auf dem lokalen Host läuft, können wir über die folgende URL auf den Server zugreifen:

http://127.0.0.1:9501/

Geben Sie diese URL in den Browser ein und Sie sehen die Textzeichenfolge „Hello, World!“ zurückgegeben der Browser.

Im Swoole-HTTP-Server können wir das $request-Objekt verwenden, um die vom Client gesendeten Anforderungsinformationen abzurufen, zum Beispiel:

$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);
});

In diesem Beispiel wird das $request-Objekt verwendet, um die Anforderungsinformationen abzurufen, einschließlich der Anforderungsmethode und des URI , Anforderungsheader und Anforderungstext. Auf diese Weise ist es einfach, die vom Browser gesendeten Anforderungsinformationen zu verstehen.

4. WebSocket-Protokoll

Neben dem HTTP-Protokoll unterstützt Swoole auch das WebSocket-Protokoll. Das WebSocket-Protokoll ist ein auf dem TCP-Protokoll basierendes Protokoll, das eine bidirektionale Kommunikation erreichen kann und sich sehr gut für Echtzeit-Kommunikationsszenarien eignet. Swoole bietet einen WebSocket-Server zur einfachen Implementierung der WebSocket-Funktionalität in PHP.

Hier ist ein einfaches Beispiel:

<?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();

In diesem Beispiel erstellen wir einen Swoole WebSocket-Server und überwachen Port 9501. Wenn ein Client eine Nachricht sendet, sendet der Server die Nachricht unverändert an den Client zurück.

5. Zugriff auf den Swoole WebSocket-Server

Der Zugriff auf den Swoole WebSocket-Server im Browser ist etwas kompliziert. Da das WebSocket-Protokoll nicht auf dem HTTP-Protokoll basiert, können wir URLs nicht wie den Zugriff auf HTTP-Server verwenden.

Wir können die JavaScript-WebSocket-API verwenden, um mit dem Swoole WebSocket-Server im Browser zu kommunizieren. Hier ist ein Beispiel für die Kommunikation mithilfe der 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>

Dieses Beispiel erstellt ein WebSocket-Objekt und stellt eine Verbindung zum Swoole WebSocket-Server her. Wenn der Benutzer eine Nachricht in das Textfeld eingibt und auf die Schaltfläche „Senden“ klickt, sendet der JavaScript-Code die Nachricht an den Server. Nach dem Empfang der Nachricht gibt der Server die Nachricht unverändert an den Client zurück und der Client zeigt die Nachricht in der Nachrichtenliste an.

6. Zusammenfassung

In diesem Artikel wird erläutert, wie der Browser auf von Swoole geschriebene Netzwerkanwendungen zugreift, einschließlich HTTP- und WebSocket-Protokollen. Ich glaube, dass Sie durch die Einleitung dieses Artikels die Fähigkeiten zum Debuggen und Testen von Swoole-Anwendungen im Browser erlernt haben.

Das obige ist der detaillierte Inhalt vonWie greift der Browser auf Swoole zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn