Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk mencapai penyegerakan data permainan masa nyata menggunakan PHP dan Websocket
Dengan perkembangan teknologi Internet, bidang permainan juga perlu mencapai penyegerakan data permainan masa nyata. Protokol WebSocket ialah teknologi yang digunakan untuk komunikasi dua hala antara pelanggan dan pelayan, memberikan kemungkinan penyegerakan data masa nyata.
Artikel ini akan memperkenalkan cara menggunakan PHP dan WebSocket untuk mencapai penyegerakan data permainan masa nyata Langkah-langkah pelaksanaan khusus adalah seperti berikut:
Langkah 1: Fahami WebSocket
WebSocket ialah protokol HTML5 yang menggunakan sambungan berterusan antara pelanggan dan. pelayan , mencapai komunikasi dua hala masa nyata. Selepas sambungan WebSocket diwujudkan, pelayan dan pelanggan boleh menghantar data masa nyata antara satu sama lain untuk mencapai penyegerakan masa nyata.
Langkah 2: Tulis pelayan WebSocket
Dalam PHP, kita boleh menggunakan perpustakaan Ratchet untuk melaksanakan pelayan WebSocket. Ratchet ialah perpustakaan pelaksanaan WebSocket PHP yang menggunakan ReactPHP sebagai perpustakaan acara untuk mengendalikan sambungan dan penerimaan dan penghantaran data.
Pertama, kita perlu memasang Komposer untuk menguruskan kebergantungan kita. Cipta fail composer.json dalam direktori akar projek dan tulis kod berikut:
{
"require": { "cboden/ratchet": "^0.4.3", "react/event-loop": "^1.0.0", "react/socket": "^1.0.0", "react/http": "^1.0.0" }
}
Kemudian, jalankan arahan berikut dalam baris arahan untuk memasang Ratchet dan kebergantungannya:
composer install
Seterusnya , kami mencipta fail bernama server.php, fail ini akan menjadi titik masuk untuk pelayan WebSocket kami. Kami mencipta contoh pelayan WebSocket dalam fail ini, menggunakan kod berikut:
01e28b42ebdccf3f4c32d3e9f8e569b4run();
Kami mencipta Kelas yang dipanggil Permainan dicipta sebagai pemproses WebSocket. Kelas ini melaksanakan antara muka MessageComponentInterface Ratchet ralat berlaku. Dalam kelas Permainan, kami menggunakan objek SplObjectStorage untuk menyimpan semua pelanggan yang bersambung. Dalam kaedah onOpen, kami melampirkan objek sambungan ke SplObjectStorage. Dalam kaedah onMessage, kami mengulangi semua pelanggan dalam SplObjectStorage dan menghantar mesej yang diterima. Dalam kaedah onClose, kami mengalih keluar objek sambungan daripada SplObjectStorage. Akhir sekali, kami mencipta dan menjalankan pelayan WebSocket menggunakan kelas IoServer. Kami membungkus HttpServer dan WsServer bersama-sama supaya kami boleh mengendalikan kedua-dua permintaan HTTP dan WebSocket. Kami menggunakan 8080 sebagai nombor port untuk pelayan WebSocket, anda boleh menukarnya jika perlu. Langkah 3: Tulis klien WebSocket Pada klien, kami menggunakan JavaScript untuk melaksanakan sambungan WebSocket. Dalam JavaScript, kita perlu mencipta objek WebSocket dan menyambung ke pelayan. Apabila keadaan objek WebSocket berubah, pengendali acara WebSocket akan dipanggil untuk diproses. Di sini, kami akan menggunakan jQuery untuk memanipulasi elemen DOM dan mengendalikan acara dengan mudah. Kami mula-mula mencipta kotak input teks ringkas dan butang dalam HTML untuk menghantar mesej ke pelayan: 100db36a723c770d327fc0aef2ce13b193f0f5c25f18dab9d176bd4f6de5d30e
<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>
9c3bca370b5104690d9ef395f2c5f8d1
6c04bd5ca3fcae76e30b72ad730ca86d<input type="text" id="message"> <button id="send">Send</button> <div id="messages"></div>< ;/ body>
73a6ac4ed44ffec12cee46588e518a5e
$(document).ready(function() {
var conn = new WebSocket('ws://localhost:8080'); conn.onopen = function(evt) { console.log('Connected to server'); }; conn.onmessage = function(evt) { console.log('Received message: ' + evt.data); $('#messages').append($('<p>').text(evt.data)); }; conn.onclose = function(evt) { console.log('Connection closed'); }; $('#send').click(function() { var message = $('#message').val(); conn.send(message); $('#message').val(''); });
}); Kami mula-mula membuat sambungan WebSocket apabila halaman selesai dimuatkan, dan apabila sambungan dibuka Panggil kaedah onopen. Dalam kaedah onmessage, kami mengeluarkan mesej yang diterima ke konsol dan kotak mesej pada halaman. Apabila sambungan ditutup, kami akan memanggil kaedah onclose.
Atas ialah kandungan terperinci Bagaimana untuk mencapai penyegerakan data permainan masa nyata menggunakan PHP dan Websocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!