Mit der Entwicklung der Internet-Technologie muss auch im Gaming-Bereich eine Echtzeitsynchronisierung der Spieldaten erreicht werden. Das WebSocket-Protokoll ist eine Technologie zur bidirektionalen Kommunikation zwischen dem Client und dem Server und bietet die Möglichkeit der Datensynchronisierung in Echtzeit.
In diesem Artikel wird erläutert, wie Sie mithilfe von PHP und WebSocket eine Echtzeitsynchronisierung von Spieldaten erreichen. Die spezifischen Implementierungsschritte lauten wie folgt:
Schritt 1: WebSocket verstehen
WebSocket ist ein HTML5-Protokoll, das dauerhafte Verbindungen zwischen Clients und verwendet Server, wodurch eine bidirektionale Echtzeitkommunikation erreicht wird. Nachdem die WebSocket-Verbindung hergestellt wurde, können Server und Client Echtzeitdaten aneinander senden, um eine Echtzeitsynchronisierung zu erreichen.
Schritt 2: Schreiben Sie den WebSocket-Server
In PHP können wir die Ratchet-Bibliothek verwenden, um den WebSocket-Server zu implementieren. Ratchet ist eine PHP-WebSocket-Implementierungsbibliothek, die ReactPHP als Ereignisbibliothek verwendet, um Verbindungen sowie den Datenempfang und -versand zu verwalten.
Zuerst müssen wir Composer installieren, um unsere Abhängigkeiten zu verwalten. Erstellen Sie eine Composer.json-Datei im Stammverzeichnis des Projekts und schreiben Sie den folgenden Code:
{
"require": { "cboden/ratchet": "^0.4.3", "react/event-loop": "^1.0.0", "react/socket": "^1.0.0", "react/http": "^1.0.0" }
}
Führen Sie dann den folgenden Befehl in der Befehlszeile aus, um Ratchet und seine Abhängigkeiten zu installieren:
composer install
Weiter , erstellen wir eine Datei namens server.php, diese Datei wird der Einstiegspunkt unseres WebSocket-Servers sein. Wir erstellen in dieser Datei eine WebSocket-Serverinstanz mit dem folgenden Code:
protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($from !== $client) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { $conn->close(); }
Abschließend erstellen und betreiben wir den WebSocket-Server mithilfe der IoServer-Klasse. Wir bündeln HttpServer und WsServer, sodass wir sowohl HTTP- als auch WebSocket-Anfragen verarbeiten können. Wir haben 8080 als Portnummer für den WebSocket-Server verwendet. Sie können diese bei Bedarf ändern.
Schritt 3: WebSocket-Client schreiben
Auf dem Client verwenden wir JavaScript, um die WebSocket-Verbindung zu implementieren. In JavaScript müssen wir ein WebSocket-Objekt erstellen und eine Verbindung zum Server herstellen. Wenn sich der Status des WebSocket-Objekts ändert, wird der WebSocket-Ereignishandler zur Verarbeitung aufgerufen.
Hier verwenden wir jQuery, um DOM-Elemente einfach zu manipulieren und Ereignisse zu verarbeiten. Wir erstellen zunächst ein einfaches Texteingabefeld und eine Schaltfläche in HTML, um eine Nachricht an den Server zu senden:
new HttpServer( new WsServer( new Game() ) ), 8080
<title>Real-time Game Data Synchronization</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script src="client.js"></script>
< ;/ body>
Dann erstellen wir eine JavaScript-Datei namens client.js, die der Einstiegspunkt für unseren WebSocket-Client sein wird. Wir erstellen die WebSocket-Verbindung in dieser Datei mit dem folgenden Code: $(document).ready(function() {<input type="text" id="message"> <button id="send">Send</button> <div id="messages"></div>
Wir erstellen die WebSocket-Verbindung zuerst, wenn das Laden der Seite abgeschlossen ist und wann Die Verbindung wird geöffnet. Rufen Sie die Methode onopen auf. Bei der onmessage-Methode geben wir die empfangene Nachricht an die Konsole und das Meldungsfeld auf der Seite aus. Wenn die Verbindung geschlossen ist, rufen wir die Methode onclose auf.
Beim Klicken auf die Schaltfläche erhalten wir die Nachricht aus dem Texteingabefeld und senden sie an den WebSocket-Server.
Abschließend können wir den Browser verwenden, um die WebSocket-Verbindung lokal zu testen. Um unseren WebSocket-Server in der Befehlszeile auszuführen, führen Sie den folgenden Befehl aus:
php server.php
Dann öffnen Sie einen Browser und geben die folgende URL ein:
http://localhost:8000/
Wir können weiter eingeben Klicken Sie auf die Seitennachricht und klicken Sie auf die Schaltfläche „Senden“. Anschließend wird die Nachricht auf dem Server empfangen und an den Client zurückgesendet. Auf der Seite sollte ein Meldungsfeld und in der Konsolenausgabe eine entsprechende Meldung angezeigt werden.
Zu diesem Zeitpunkt haben wir die Synchronisierung von Spieldaten in Echtzeit mithilfe von PHP und WebSocket erfolgreich implementiert. Die Datensynchronisierung in Echtzeit ist nicht nur in Spielen verfügbar, sondern auch in einer Vielzahl von Anwendungen, wie zum Beispiel Live-Chat und kollaborativer Bearbeitung. Ich hoffe, dass dieser Artikel Ihnen helfen kann, die Funktionsweise von WebSocket zu verstehen und Sie durch die Implementierung von WebSocket führt.
Das obige ist der detaillierte Inhalt vonSo erreichen Sie die Synchronisierung von Spieldaten in Echtzeit mit PHP und Websocket. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!