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!