Rumah > Artikel > pembangunan bahagian belakang > Cara menambah pemberitahuan masa nyata ke tapak web anda menggunakan PHP dan MQTT
Cara menambah fungsi pemberitahuan masa nyata pada tapak web anda menggunakan PHP dan MQTT
Fungsi pemberitahuan masa nyata untuk aplikasi web semakin popular di kalangan tapak web moden. Pemberitahuan masa nyata boleh digunakan untuk pelbagai tujuan, seperti sembang langsung, ulasan masa nyata dan makluman mesej baharu. Dalam artikel ini, kami akan menerangkan cara menambah fungsi pemberitahuan masa nyata pada tapak web anda menggunakan protokol PHP dan MQTT.
MQTT (Message Qeuing Telemetry Transport) ialah protokol penghantaran mesej ringan yang direka untuk menyediakan komunikasi segera yang cekap. Ia direka bentuk untuk persekitaran rangkaian jalur lebar rendah dan tidak stabil, dan sangat sesuai untuk penghantaran mesej untuk aplikasi IoT.
Protokol MQTT adalah berdasarkan model terbitkan/langganan Pelanggan boleh melanggan topik tertentu (topik) Apabila mesej baharu diterbitkan kepada topik tersebut, pelanggan akan menerima pemberitahuan dalam masa nyata.
Sebelum kita mula, kita perlu memastikan syarat berikut dipenuhi:
Pasang sambungan Mosquitto MQTT dan anda boleh menggunakan arahan pecl:
pecl install Mosquitto-alpha
Dalam contoh ini, kami akan mencipta aplikasi sembang mudah di mana pengguna boleh menghantar mesej dan menerima mesej yang dihantar oleh orang lain pengguna dalam masa nyata. Kami akan menggunakan PHP dan MQTT untuk melaksanakan fungsi ini.
Pertama, kita perlu mencipta pelanggan MQTT, mewujudkan hubungan dengan broker MQTT, dan melanggan topik. Kami akan menggunakan perpustakaan phpMQTT untuk memudahkan pelaksanaan pelanggan MQTT. Pustaka phpMQTT boleh dipasang melalui kod berikut:
composer require bluerhinos/phpmqtt
Kemudian, kami mencipta fail bernama chat.php
dan menambah kod berikut: chat.php
的文件,并添加以下代码:
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("localhost", 1883, "clientId_" . uniqid()); if ($mqtt->connect()) { $mqtt->subscribe("chat_room", 0); while ($mqtt->proc()) { } $mqtt->close(); } else { echo "连接MQTT代理失败"; }
在上述代码中,我们首先创建了一个mqtt实例,并使用localhost
和1883
作为MQTT代理的主机和端口。然后,我们通过$mqtt->connect()
方法建立与MQTT代理的连接。如果连接成功,则使用$mqtt->subscribe("chat_room", 0)
订阅一个名为chat_room
的主题。最后,我们使用$mqtt->proc()
方法来保持与MQTT代理的连接。
接下来,我们创建一个名为index.html
的前端文件,并添加以下代码:
<!DOCTYPE html> <html> <head> <title>实时聊天</title> <meta charset="utf-8"> <style> #chat_log { height: 300px; overflow-y: scroll; } </style> </head> <body> <h1>实时聊天</h1> <div id="chat_log"></div> <input type="text" id="message" placeholder="请输入消息"> <button id="send_button">发送</button> <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <script> var clientId = 'web_' + new Date().getTime(); var mqtt = new Paho.MQTT.Client("localhost", 1883, clientId); var topic = "chat_room"; mqtt.onConnectionLost = function(responseObject) { console.log('连接丢失'); }; mqtt.onMessageArrived = function(message) { var msg = message.payloadString; $("#chat_log").append('<p>' + msg + '</p>'); }; mqtt.connect({ onSuccess: function() { mqtt.subscribe(topic); } }); $(document).ready(function() { $("#send_button").click(function() { var message = $("#message").val(); mqtt.send(topic, message); $("#message").val(''); }); }); </script> </body> </html>
在上述代码中,我们首先在mqtt.onConnectionLost
方法中处理与MQTT代理的连接丢失事件。在mqtt.onMessageArrived
方法中,我们接收到新消息时向聊天记录中添加该消息。
通过调用mqtt.connect()
方法并提供一个回调函数,在连接成功后订阅chat_room
主题。然后,我们使用jQuery在页面加载时通过$("#send_button").click
方法来实现发送消息功能。
最后,我们在浏览器中打开index.html
rrreee
localhost
dan 1883
sebagai hos dan port broker MQTT. Kemudian, kami mewujudkan sambungan dengan broker MQTT melalui kaedah $mqtt->connect()
. Jika sambungan berjaya, gunakan $mqtt->subscribe("chat_room", 0)
untuk melanggan topik bernama chat_room
. Akhir sekali, kami menggunakan kaedah $mqtt->proc()
untuk mengekalkan sambungan kepada broker MQTT. Seterusnya, kami mencipta fail bahagian hadapan yang dipanggil index.html
dan menambah kod berikut: rrreee
Dalam kod di atas, kami mula-mula menambah kod berikut dalammqtt.onConnectionLost Kaedah mengendalikan peristiwa kehilangan sambungan dengan broker MQTT. Dalam kaedah <code>mqtt.onMessageArrived
, apabila kami menerima mesej baharu, kami menambahkannya pada sejarah sembang. 🎜🎜Dengan memanggil kaedah mqtt.connect()
dan menyediakan fungsi panggil balik, langgan topik chat_room
selepas sambungan berjaya. Kemudian, kami menggunakan jQuery untuk melaksanakan fungsi penghantaran mesej melalui kaedah $("#send_button").klik
apabila halaman dimuatkan. 🎜🎜Akhir sekali, kami membuka fail index.html
dalam penyemak imbas dan anda boleh melihat antara muka sembang. 🎜🎜Ringkasan🎜🎜Artikel ini menerangkan cara menambahkan fungsi pemberitahuan masa nyata pada tapak web anda menggunakan protokol PHP dan MQTT. Kami telah mencipta aplikasi sembang ringkas dengan menggunakan perpustakaan phpMQTT di mana pengguna boleh menghantar mesej dan menerima mesej daripada pengguna lain dalam masa nyata. Melalui contoh ini, kita dapat melihat cara menggunakan protokol MQTT untuk mencapai komunikasi segera yang cekap bagi memenuhi keperluan laman web moden. 🎜Atas ialah kandungan terperinci Cara menambah pemberitahuan masa nyata ke tapak web anda menggunakan PHP dan MQTT. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!