Dengan perkembangan Internet, komunikasi masa nyata menjadi lebih penting sama ada perkhidmatan pelanggan dalam talian atau interaksi masa nyata dalam permainan, sokongan komunikasi masa nyata diperlukan. Sebagai salah satu bahasa arus perdana pembangunan Web, bahasa PHP sebenarnya mempunyai lebih banyak kaedah komunikasi masa nyata. Antaranya, menggunakan teknologi Pusher, fungsi komunikasi masa nyata dapat direalisasikan dengan cepat dan mudah.
Apakah itu Pusher?
Pusher ialah perkhidmatan pemesejan masa nyata yang membolehkan aplikasi melaksanakan fungsi komunikasi masa nyata dengan mudah tanpa menyediakan pelayan mereka sendiri. Ia berdasarkan protokol WebSockets dan mempunyai kelebihan kebolehpercayaan dan kestabilan yang kuat, kemudahan penggunaan dan kecekapan pembangunan yang tinggi. Selain itu, Pusher juga menyediakan pelbagai SDK yang berbeza, termasuk PHP, Javascript, Ruby dan bahasa lain. SDK ini membolehkan pembangun menyepadukan perkhidmatan Pusher dengan cepat dalam aplikasi mereka untuk mencapai fungsi komunikasi masa nyata.
Bagaimana untuk menggunakan Pusher?
Sebelum menggunakan Pusher, kita perlu mendaftar akaun Pusher dan membuat aplikasi. Kemudian, kami perlu menjana Kunci Apl, Rahsia Apl dan ID Apl dalam aplikasi dan menambahkan maklumat ini pada aplikasi kami.
Seterusnya, kita perlu memasang Pusher PHP SDK, yang boleh dipasang melalui Composer:
composer require pusher/pusher-php-server "^4.0"
Selepas pemasangan selesai, kita boleh mula menulis kod:
<?php // 引入Pusher SDK require __DIR__ . '/vendor/autoload.php'; // 初始化Pusher实例 $options = array( 'cluster' => 'YOUR_CLUSTER', 'useTLS' => true ); $pusher = new PusherPusher( 'APP_KEY', 'APP_SECRET', 'APP_ID', $options ); // 发送消息 $pusher->trigger('channel_name', 'event_name', array('message' => 'hello world'));
Kod di atas menunjukkan cara menggunakan Pusher, dan kandungan yang perlu diganti ialah:
Skrip PHP ini akan menolak paket data JSON dengan atribut "message" ke saluran bernama "channel_name". Paket data mengandungi mesej "hello world".
Sudah tentu, dalam aplikasi sebenar, adalah mustahil untuk kami hanya menghantar mesej kepada Pusher dengan cara ini. Di bawah, kami akan memperkenalkan secara terperinci cara menggunakan Pusher dalam aplikasi praktikal.
Pertempuran praktikal: ruang sembang masa nyata
Seterusnya, kami akan menggunakan Pusher untuk membina ruang sembang masa nyata untuk melaksanakan fungsi sembang masa nyata antara pengguna.
Langkah Pertama: Persediaan
Pertama, kita perlu mencipta aplikasi baharu dalam Pusher. Log masuk ke laman web rasmi Pusher, klik butang "CREATE NEW APP", isi maklumat asas dan buat aplikasi seperti yang digesa.
Kemudian, kita perlu mencari APP_KEY, APP_SECRET dan APP_ID di bawah tab "Kunci" pada tetapan aplikasi dan menyimpan maklumat ini dengan betul.
Seterusnya, kami perlu menyediakan pelayan web untuk menjalankan skrip PHP kami. Memandangkan kami perlu menolak mesej dalam masa nyata, kami tidak boleh menggunakan pelayan Apache atau Nginx tradisional dan perlu menggunakan pelayan yang menyokong protokol WebSocket. Adalah disyorkan untuk menggunakan perpustakaan PHP Ratchet sebagai pelayan WebSocket, yang boleh dipasang melalui Komposer:
composer require cboden/ratchet
Langkah 2: Bina antara muka asas
Sebelum mula menulis kod PHP, kita perlu membina antara muka bilik sembang asas. Elemen berikut perlu disertakan dalam antara muka:
Di sini, kami menggunakan kod HTML dan JavaScript yang agak mudah untuk melaksanakan antara muka ini.
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>实时聊天室</title> </head> <body> <ul id="messages"></ul> <form id="chat-form"> <input type="text" id="message-input"/> <button type="submit">发送</button> </form> <script src="https://js.pusher.com/7.0/pusher.min.js"></script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> // 初始化Pusher客户端 const pusher = new Pusher('APP_KEY', { cluster: 'YOUR_CLUSTER', encrypted: true }); // 订阅频道 const channel = pusher.subscribe('chat-channel'); // 处理消息 channel.bind('chat-message', function(data) { $('#messages').append('<li>' + data.message + '</li>'); }); // 发送消息 $('#chat-form').submit(function(e) { e.preventDefault(); const message = $('#message-input').val(); $('#message-input').val(''); $.post('/send-message.php', {message: message}); }); </script> </body> </html>
Dalam kod di atas, kami memperkenalkan klien Pusher dan perpustakaan jQuery, dan mentakrifkan contoh klien Pusher. Kemudian, kami melanggan saluran Pusher bernama "channel-chat" dan menentukan fungsi pengendali acara untuk menulis mesej ke senarai mesej apabila acara "chat-message" diterima dalam saluran ini. Pada masa yang sama, kami juga menentukan fungsi pemprosesan acara penyerahan borang Apabila pengguna mengklik butang hantar, data borang akan diposkan ke fail /send-message.php.
Langkah 3: Hantar dan terima mesej
Kini, kita perlu melaksanakan kod dalam fail /send-message.php supaya data borang boleh dihantar ke pelayan Pusher dengan betul. Kod /send-message.php yang lengkap adalah seperti berikut:
<?php // 引入Pusher SDK require __DIR__ . '/vendor/autoload.php'; // 初始化Pusher实例 $options = array( 'cluster' => 'YOUR_CLUSTER', 'useTLS' => true ); $pusher = new PusherPusher( 'APP_KEY', 'APP_SECRET', 'APP_ID', $options ); // 获取消息内容 $message = $_POST['message']; // 将消息推送到Pusher服务器中 $pusher->trigger('chat-channel', 'chat-message', array('message' => $message));
Dalam kod di atas, kami mula-mula memperkenalkan SDK Pusher dan memulakan tika Pusher. Kemudian, kami menolak mesej ke saluran Penolak bernama "saluran sembang" berdasarkan data yang diserahkan oleh borang dan menentukan nama acara dan kandungan mesej.
Dengan cara ini, apabila pengguna memasukkan mesej dalam bilik sembang dan mengklik butang "Hantar", mesej itu akan diposkan ke fail /send-message.php, dan kemudian kod PHP akan menolak mesej itu ke Pelayan penolak. Pada masa ini, pelayan Pusher akan menyiarkan mesej kepada semua pelanggan yang telah melanggan "saluran sembang" untuk melengkapkan keseluruhan proses penghantaran dan penerimaan mesej.
Kesimpulan
Menggunakan teknologi Pusher untuk melaksanakan fungsi komunikasi masa nyata boleh sangat memudahkan kesukaran pelaksanaan dan meningkatkan kecekapan pembangunan. Melalui contoh demonstrasi di atas, kita dapat melihat bahawa ia adalah sangat mudah untuk menggunakan teknologi Pusher untuk membina ruang sembang masa nyata dalam amalan.
Sudah tentu, Pusher tidak terhad kepada senario aplikasi bilik sembang, tetapi boleh digunakan dalam banyak senario, seperti permainan masa nyata, Internet of Things, pemantauan data masa nyata dan senario lain yang boleh dilaksanakan menggunakan teknologi Pusher. Jika anda juga perlu melaksanakan fungsi komunikasi masa nyata, anda boleh cuba menggunakan Pusher untuk melaksanakan fungsi berkaitan dengan cepat.
Atas ialah kandungan terperinci Komunikasi masa nyata menggunakan PHP dan Pusher. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!