Dengan perkembangan teknologi Internet, aplikasi Web masa nyata telah menjadi kaedah pembangunan yang semakin popular. WebSocket, sebagai protokol komunikasi dupleks penuh, telah menjadi cara penting untuk melaksanakan aplikasi Web masa nyata PHP juga menyediakan API WebSocket untuk memudahkan penggunaan pembangun. Artikel ini akan memperkenalkan cara menggunakan API WebSocket dalam PHP untuk melaksanakan aplikasi web masa nyata.
1. Gambaran Keseluruhan WebSocket
WebSocket ialah protokol yang menyediakan komunikasi dupleks penuh melalui sambungan TCP tunggal. Ia membolehkan aplikasi web menyampaikan data masa nyata antara klien dan pelayan. . Berbanding dengan protokol HTTP, WebSocket mempunyai kependaman yang lebih rendah dan lebih sedikit jabat tangan dalam menghantar data, membolehkan lebih banyak aplikasi web masa nyata.
2. Gunakan API WebSocket dalam PHP untuk melaksanakan aplikasi web masa nyata
PHP WebSocket adalah berdasarkan ReactPHP, jadi anda perlu untuk memasang ReactPHP dahulu :
composer require react/socket:^1.11.0 react/event-loop:^1.1.0
Berikut ialah kod perkhidmatan PHP WebSocket yang mudah:
use ReactSocketConnectionInterface; use ReactSocketServer; require __DIR__ . '/vendor/autoload.php'; $loop = ReactEventLoopFactory::create(); $socket = new Server('localhost:8080', $loop); $clients = new SplObjectStorage(); $socket->on('connection', function (ConnectionInterface $conn) use ($clients) { $clients->attach($conn); $conn->on('data', function ($data) use ($clients, $conn) { foreach ($clients as $client) { if ($conn !== $client) { $client->write($data); } } }); $conn->on('close', function () use ($clients, $conn) { $clients->detach($conn); }); }); $loop->run();
Kod ini mencipta perkhidmatan WebSocket yang mendengar ini Port mesin 8080. Apabila pelanggan menyambung, simpan objek klien ke objek SplObjectStorage. Apabila terdapat penghantaran data, hantar data kepada pelanggan lain kecuali pengirim. Apabila pelanggan memutuskan sambungan, padamkan objek klien daripada SplObjectStorage.
Simpan kod di atas sebagai fail server.php
dan jalankan arahan php server.php
untuk memulakan perkhidmatan WebSocket. Pada ketika ini, perkhidmatan WebSocket sudah berjalan pada port tempatan 8080 dan boleh menerima sambungan klien.
Berikut ialah kod klien PHP WebSocket yang mudah:
use ReactEventLoopFactory; use ReactSocketConnector; use ReactSocketConnectionInterface; require __DIR__ . '/vendor/autoload.php'; $loop = Factory::create(); $connector = new Connector($loop); $connector->connect('tcp://127.0.0.1:8080')->then(function (ConnectionInterface $conn) use ($loop) { $conn->on('data', function ($data) { echo $data; }); $loop->addReadStream(STDIN, function () use ($conn) { $line = fgets(STDIN); $conn->write($line); }); }, function (Exception $e) { echo 'Could not connect: ' . $e->getMessage() . PHP_EOL; }); $loop->run();
Kod ini mencipta klien WebSocket, sambung ke port 8080 daripada mesin ini. Apabila terdapat penghantaran data, data dikeluarkan ke konsol. Apabila membaca input konsol, hantarkan input ke pelayan WebSocket.
Simpan kod di atas sebagai fail client.php
dan jalankan arahan php client.php
untuk memulakan klien WebSocket. Pada ketika ini, klien WebSocket telah disambungkan ke pelayan WebSocket tempatan.
Masukkan data dalam konsol, data akan dihantar ke pelayan WebSocket, dan pelayan akan menghantar semula data kepada orang lain kecuali pengirim pelanggan. Kami boleh membuka berbilang konsol dan menjalankan php client.php
untuk menguji kesan komunikasi masa nyata.
3. Ringkasan
WebSocket API menyediakan cara untuk PHP melaksanakan WebSocket, yang boleh melaksanakan aplikasi Web masa nyata dengan mudah. Artikel ini memperkenalkan cara menggunakan API WebSocket dalam PHP untuk melaksanakan aplikasi web masa nyata Ia merangkumi gambaran keseluruhan WebSocket, mencipta perkhidmatan WebSocket, mencipta klien WebSocket dan menguji komunikasi WebSocket.
Atas ialah kandungan terperinci Cara menggunakan API WebSocket dalam PHP untuk melaksanakan aplikasi web masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!