Heim  >  Artikel  >  Backend-Entwicklung  >  So erreichen Sie die Synchronisierung von Spieldaten in Echtzeit mit PHP und Websocket

So erreichen Sie die Synchronisierung von Spieldaten in Echtzeit mit PHP und Websocket

WBOY
WBOYOriginal
2023-06-28 08:52:171209Durchsuche

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:

e6f1c58c5b6b4ebe8d5085ea74af0006run();

Wir erstellen eine Klasse namens Game als Prozessor von WebSocket. Diese Klasse implementiert die MessageComponentInterface-Schnittstelle von Ratchet. Wir müssen vier Methoden implementieren: onOpen gibt an, wann ein neuer WebSocket-Client verbunden ist, onMessage gibt an, wann eine vom Client gesendete Nachricht empfangen wird, und onClose gibt an, wann der WebSocket-Client die Verbindung trennt Fehler tritt auf.

In der Game-Klasse verwenden wir das SplObjectStorage-Objekt, um alle verbundenen Clients zu speichern. In der onOpen-Methode hängen wir das Verbindungsobjekt an SplObjectStorage an. In der onMessage-Methode durchlaufen wir alle Clients in SplObjectStorage und senden die empfangene Nachricht. In der onClose-Methode entfernen wir das Verbindungsobjekt aus SplObjectStorage.


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:

100db36a723c770d327fc0aef2ce13b1

93f0f5c25f18dab9d176bd4f6de5d30e

new HttpServer(
    new WsServer(
        new Game()
    )
),
8080

9c3bca370b5104690d9ef395f2c5f8d1

6c04bd5ca3fcae76e30b72ad730ca86d

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

73a6ac4ed44ffec12cee46588e518a5e

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.

Schritt 4: Testen Sie die WebSocket-Verbindung


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!

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