WebSocket ist zu einem häufig verwendeten Echtzeit-Kommunikationsprotokoll in modernen Webanwendungen geworden. Die Entwicklung von WebSocket-Servern mit PHP erfordert im Allgemeinen die Verwendung von Erweiterungen wie Swoole, da diese Unterstützung für asynchrone Programmierung, Prozessverwaltung, Speicherzuordnung und andere WebSocket-bezogene Funktionen bieten. In diesem Artikel besprechen wir, wie Swoole zum Implementieren der WebSocket-Server-Client-Interaktion verwendet wird, und stellen einige spezifische Codebeispiele bereit.
Swoole ist eine hervorragende PHP-Erweiterung, die eine sehr gute Unterstützung für die Implementierung von WebSocket-Servern bietet. Swoole unterstützt asynchrone Programmierung sowie gleichzeitigen Multiprozess- und Multithread-Zugriff. Es verwaltet den Lebenszyklus des Servers und bietet weitere nützliche Funktionen wie Speicherzuordnung. WebSocket ist ein häufig verwendetes Echtzeit-Kommunikationsprotokoll in modernen Webanwendungen. Die Verwendung von Swoole zur Entwicklung eines WebSocket-Servers ermöglicht uns die einfache Implementierung der Echtzeitkommunikation mit Clients.
Zuerst müssen Sie die Swoole-Erweiterung installieren, die über den folgenden Befehl installiert werden kann:
pecl install swoole
Nach der Installation müssen Sie die folgende Konfiguration zur php.ini-Datei hinzufügen:
extension=swoole
Nach Abschluss der oben genannten Vorgänge können Sie es in PHP Extended mit Swoole verwenden.
Als nächstes müssen Sie einen WebSocket-Client lokal erstellen. Sie können einige Netzwerktools verwenden oder ein Chrome-Browser-Plug-in „Simple WebSocket Client“ installieren.
In diesem Prozess müssen Sie eine Swoole WebSocket-Serverinstanz erstellen und einige grundlegende Konfigurationen durchführen, z. B. das Festlegen des Überwachungsports und der IP-Adresse des WebSocket-Servers. Außerdem müssen Sie verschiedene Einstellungen vornehmen Ereignisse und Ereignisse des WebSocket-Servers. Das Folgende ist ein einfaches Beispiel:
$server = new SwooleWebsocketServer("0.0.0.0", 9501); $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "connection open: {$request->fd} "; }); $server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; $server->push($frame->fd, json_encode(["hello", "world"])); }); $server->on('close', function (SwooleWebSocketServer $server, $fd) { echo "connection close: {$fd} "; }); $server->start();
Im obigen Code wird eine WebSocket-Serverinstanz mit dem neuen Schlüsselwort erstellt. Sein Konstruktor muss eine IP-Adresse und eine Portnummer übergeben, und Swoole wartet auf WebSocket-Verbindungen an diesem Port. Anschließend werden die Öffnungs-, Nachrichten- und Schließereignisse des WebSocket-Servers über mehrere Rückruffunktionen verarbeitet. Rufen Sie abschließend die Methode $server->start() auf, um den WebSocket-Server zu starten.
Nachdem Sie eine WebSocket-Serverinstanz erstellt haben, können Sie alle Benutzerereignisse verarbeiten, indem Sie den Ereignisrückruf erneut binden. Beispielsweise können wir das Open-Ereignis einer WebSocket-Client-Verbindung zum Server verarbeiten, indem wir die Callback-Funktion „open“ erneut binden.
Zwei Möglichkeiten für die Interaktion zwischen WebSocket-Client und -Server: Der Server kann Daten an den Client senden, und der Client kann auch Daten an den WebSocket-Server senden.
Der Server kann die Methode $server->push() verwenden, um Daten an einen bestimmten Client oder alle Clients zu senden. Hier ist ein einfaches Beispiel:
$server->push($frame->fd, json_encode(["hello", "world"]));
Im obigen Code ist $frame->fd die eindeutige Kennung des Clients. Eine WebSocket-Verbindung kann man sich als eine zum Server offene TCP-Verbindung vorstellen, bei der der Client durch eine eindeutige Kennung ($frame->fd) identifiziert wird.
Der Client kann die in JavaScript geschriebene WebSocket-API verwenden, um Daten an den Server zu senden. Das Folgende ist ein einfacher JavaScript-Codeausschnitt, der zeigt, wie Daten an einen WebSocket-Server gesendet werden.
const socket = new WebSocket('ws://localhost:9501'); socket.addEventListener('open', function (event) { socket.send('Hello World!'); // 发送数据 });
Die Kommunikation zwischen Client und Server ist ereignisbasiert, daher müssen die empfangenen Daten durch Ereignishandler verarbeitet werden. An das WebSocket-Ereignis „message“ muss eine Rückruffunktion gebunden werden, die für die Verarbeitung der empfangenen Daten verantwortlich ist. Das Folgende ist ein einfaches Beispiel:
$server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; });
Das Folgende ist ein vollständiges Swoole-WebSocket-Server-Beispiel, das zeigt, wie Swoole zum Einrichten eines WebSocket-Servers und zur Interaktion mit Clients verwendet wird.
Nach dem Login kopieren
Dieser WebSocket-Server überwacht und verarbeitet WebSocket-Verbindungen auf Port 9501. Sie können jeden WebSocket-Client verwenden, um diese Serverinstanz zu testen und zu erkunden.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Swoole zum Implementieren der WebSocket-Server- und Client-Interaktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!