


PHP dan WebSocket: Amalan terbaik untuk pemindahan data masa nyata
PHP dan WebSocket: Kaedah amalan terbaik untuk mencapai penghantaran data masa nyata
Pengenalan:
Dalam pembangunan aplikasi web, penghantaran data masa nyata adalah keperluan teknikal yang sangat penting. Protokol HTTP tradisional ialah protokol model tindak balas permintaan dan tidak boleh mencapai penghantaran data masa nyata dengan berkesan. Untuk memenuhi keperluan penghantaran data masa nyata, protokol WebSocket telah wujud.
WebSocket ialah protokol komunikasi dupleks penuh yang menyediakan cara untuk berkomunikasi dupleks penuh melalui sambungan TCP tunggal. Berbanding dengan protokol HTTP, WebSocket boleh mencapai penghantaran data yang lebih pantas dan tolakan data masa nyata. Disebabkan prestasi cemerlang dan sokongan yang luas, WebSocket digunakan secara meluas dalam aplikasi masa nyata.
Untuk melaksanakan komunikasi WebSocket dalam PHP, kami boleh menggunakan beberapa perpustakaan matang untuk memudahkan proses pembangunan. Artikel ini akan memperkenalkan cara menggunakan perpustakaan Ratchet untuk melaksanakan penyepaduan PHP dan WebSocket, dan menyediakan beberapa amalan terbaik supaya anda boleh membina aplikasi untuk penghantaran data masa nyata dengan mudah.
1. Konfigurasikan persekitaran dan pasang kebergantungan
Untuk menggunakan perpustakaan Ratchet, anda perlu memenuhi persekitaran dan syarat kebergantungan berikut:
- Versi PHP >=
- Alat komposer.
Langkah pemasangan adalah seperti berikut:
- Buat direktori projek baharu dan masukkan direktori dalam baris arahan.
-
Gunakan Komposer untuk memasang perpustakaan Ratchet. Masukkan arahan berikut pada baris arahan:
composer require cboden/ratchet
Ini akan memuat turun dan memasang perpustakaan Ratchet dan kebergantungannya secara automatik.
- Selepas pemasangan selesai, anda boleh mula menggunakan Ratchet dalam projek anda.
2. Cipta pelayan WebSocket
Menggunakan perpustakaan Ratchet, anda boleh membuat pelayan WebSocket dengan mudah. Berikut ialah kod contoh mudah:
use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class MyWebSocketServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "[New connection] - Connection ID: {$conn->resourceId} "; } 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); echo "[Connection closed] - Connection ID: {$conn->resourceId} "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "[Error] - Connection ID: {$conn->resourceId} - {$e->getMessage()} "; $conn->close(); } } $server = new RatchetWebSocketWsServer(new MyWebSocketServer()); $server->disableVersion(0); $server->loop->addPeriodicTimer(60, function() { // 定时任务 }); $socket = new ReactSocketServer('0.0.0.0:8080', $server->loop); $server = new ReactHttpServer($socket, $server->loop); $server->on('request', function ($request, $response) use (&$socket) { $response->end('Hello, World!'); }); echo "WebSocket server is running... "; $server->run();
Dalam contoh ini, kami mula-mula mencipta kelas yang dipanggil "MyWebSocketServer" dan melaksanakan antara muka MessageComponentInterface Ratchet. Antara muka ini mengandungi empat kaedah: onOpen
, onMessage
, onClose
dan onError
, yang digunakan untuk mengendalikan sambungan klien , menerima mesej, menutup sambungan dan mengendalikan ralat. onOpen
、onMessage
、onClose
和onError
,用于处理客户端连接、收到消息、关闭连接和处理错误。
在onOpen
方法中,我们更新了服务器中的客户端列表,并打印出新连接的ID。
在onMessage
方法中,我们遍历了客户端列表,并将收到的消息发送给所有的客户端,除了消息来源的客户端。
在onClose
方法中,我们删除了客户端列表中的关闭连接,并打印出连接的ID。
在onError
方法中,我们处理了连接发生错误的情况,并关闭连接。
接下来,我们创建了一个WebSocket服务器的实例,并将MyWebSocketServer
作为参数传递给了WsServer
。然后,创建一个React HTTP服务器的实例。最后,我们通过run
方法启动了WebSocket服务器。
三、前端客户端页面
为了测试WebSocket服务器,我们需要创建一个简单的前端页面,用于模拟WebSocket客户端。以下是一个示例页面:
<!DOCTYPE html> <html> <head> <title>WebSocket Client</title> <script> var socket = new WebSocket("ws://localhost:8080"); socket.onmessage = function(event) { var message = event.data; // 处理收到的消息 console.log(message); }; // 发送消息 function sendMessage() { var message = document.getElementById('message').value; socket.send(message); } </script> </head> <body> <input type="text" id="message" placeholder="Type a message..."> <button onclick="sendMessage()">Send</button> </body> </html>
在这个示例中,我们首先创建了一个WebSocket对象并指定了服务器的地址和端口。然后,我们注册了onmessage
onOpen
, kami mengemas kini senarai klien dalam pelayan dan mencetak ID sambungan baharu. Dalam kaedah onMessage
, kami merentasi senarai klien dan menghantar mesej yang diterima kepada semua pelanggan kecuali klien yang mana mesej itu berasal.
Dalam kaedah onClose
, kami memadamkan sambungan tertutup dalam senarai klien dan mencetak ID sambungan.
Dalam kaedah onError
, kami mengendalikan situasi di mana ralat berlaku dalam sambungan dan menutup sambungan.
Seterusnya, kami mencipta contoh pelayan WebSocket dan menyerahkan MyWebSocketServer
sebagai parameter kepada WsServer
. Kemudian, buat contoh pelayan HTTP React. Akhirnya, kami memulakan pelayan WebSocket melalui kaedah run
.
3. Halaman pelanggan bahagian hadapan
Untuk menguji pelayan WebSocket, kami perlu mencipta halaman hujung hadapan yang mudah untuk mensimulasikan klien WebSocket. Berikut ialah halaman contoh:
Dalam contoh ini, kami mula-mula mencipta objek WebSocket dan menentukan alamat dan port pelayan. Kemudian, kami mendaftarkan pengendali acara onmessage
untuk mengendalikan mesej yang diterima. Dalam contoh ini, kami hanya mencetak mesej ke konsol.
- Selain itu, kami menambah kotak input teks dan butang hantar untuk membolehkan pengguna menaip dan menghantar mesej.
- 4. Jalankan dan uji
- Selepas menjalankan skrip pelayan WebSocket pada pelayan anda, buka penyemak imbas dan lawati halaman klien bahagian hadapan. Anda akan melihat kotak input teks dan butang hantar.
Atas ialah kandungan terperinci PHP dan WebSocket: Amalan terbaik untuk pemindahan data masa nyata. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

PHP tetap penting dalam proses pemodenan kerana ia menyokong sejumlah besar laman web dan aplikasi dan menyesuaikan diri dengan keperluan pembangunan melalui rangka kerja. 1.Php7 meningkatkan prestasi dan memperkenalkan ciri -ciri baru. 2. Rangka kerja moden seperti Laravel, Symfony dan CodeIgniter memudahkan pembangunan dan meningkatkan kualiti kod. 3. Pengoptimuman prestasi dan amalan terbaik terus meningkatkan kecekapan aplikasi.

Phphassignificantelympactedwebdevelopmentandextendsbeyondit.1) itpowersmajorplatformslikeworderpressandexcelsindatabaseIntions.2) php'SadaptabilityAldoStoScaleforlargeapplicationFrameworksLikelara.3)

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

Dalam PHP, gunakan kata kunci klon untuk membuat salinan objek dan menyesuaikan tingkah laku pengklonan melalui kaedah Magic \ _ _ _. 1. Gunakan kata kunci klon untuk membuat salinan cetek, mengkloning sifat objek tetapi bukan sifat objek. 2. Kaedah klon \ _ \ _ boleh menyalin objek bersarang untuk mengelakkan masalah menyalin cetek. 3. Beri perhatian untuk mengelakkan rujukan pekeliling dan masalah prestasi dalam pengklonan, dan mengoptimumkan operasi pengklonan untuk meningkatkan kecekapan.

PHP sesuai untuk pembangunan web dan sistem pengurusan kandungan, dan Python sesuai untuk sains data, pembelajaran mesin dan skrip automasi. 1.PHP berfungsi dengan baik dalam membina laman web dan aplikasi yang cepat dan berskala dan biasanya digunakan dalam CMS seperti WordPress. 2. Python telah melakukan yang luar biasa dalam bidang sains data dan pembelajaran mesin, dengan perpustakaan yang kaya seperti numpy dan tensorflow.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

Dreamweaver Mac版
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)