MQTT は、パブリッシュ/サブスクライブ モデルに基づく軽量のメッセージ送信プロトコルです。 MQTT は、小型センサーやマイクロコントローラーなどのハードウェア デバイスとの通信に特に適した、低遅延で信頼性の高い接続を提供します。この記事では、PHP を使用して MQTT ベースのクライアント コードを実装する方法を紹介します。
コードを書き始める前に、MQTT プロトコルの仕様を理解する必要があります。 MQTT プロトコル仕様では、パブリッシャーとサブスクライバーという 2 つの役割が定義されています。パブリッシャーはトピックにメッセージをパブリッシュし、サブスクライバーは特定のトピックに関するメッセージをサブスクライブします。
MQTT では、メッセージ送信プロセスには、接続の確立、メッセージのパブリッシュ、トピックのサブスクライブという 3 つのステップが含まれます。接続の確立には TCP プロトコルが使用され、TCP 接続上で MQTT メッセージの送信が行われます。 MQTT メッセージは、固定ヘッダーと可変ヘッダーの 2 つの部分に分かれています。固定ヘッダーにはメッセージ タイプや QoS などの情報が含まれ、可変ヘッダーにはトピック名やメッセージ ID などの可変情報が含まれます。
MQTT プロトコルは、QoS0、QoS1、および QoS2 の 3 つのサービス品質レベル (QoS) をサポートします。 QoS0 は最低レベルであり、パブリッシャはメッセージを 1 回送信するだけで、メッセージがサブスクライバに配信されるかどうかは保証しません。 QoS1 と QoS2 は、メッセージが加入者に確実に配信されるようにします。
PHP では、Mosquitto-PHP
拡張機能を使用して MQTT クライアントの開発を実現できます。 Mosquitto-PHP
は、MQTT ブローカーと通信するための PHP 拡張機能であり、MQTT プロトコルを実装するための一連の関数を提供します。まず、Mosquitto ブローカー
および Mosquitto-PHP
拡張機能がインストールされていることを確認する必要があります。次のコマンドを使用してインストールできます:
sudo apt-get install mosquitto mosquitto-clients sudo pecl install Mosquitto-alpha
インストール後、MQTT に基づいて PHP クライアント コードを作成できます。
まず、MQTT ブローカーに接続する必要があります。接続するときは、MQTT ブローカーのアドレス、ポート、クライアント ID を指定する必要があります。具体的なコードは次のとおりです。
$mqtt = new Mosquitto\Client('client_id'); $mqtt->connect('127.0.0.1', 1883, 60);
次に、特定のトピックにメッセージを公開できます。メッセージを公開するときは、トピック名、メッセージの内容、およびサービス品質レベルを指定する必要があります。サンプル コードは次のとおりです。
$mqtt->publish('topic', 'message', 0);
最後に、1 つ以上のトピックをサブスクライブして、サーバーからメッセージを受信できます。トピックを購読するときは、トピック名とサービス品質レベルを指定する必要があります。以下はトピックを購読する例です:
$mqtt->subscribe('topic', 0);
以下は完全な MQTT クライアント コードの例です:
connect('127.0.0.1', 1883, 60); $mqtt->publish('topic', 'message', 0); $mqtt->subscribe('topic', 0); $mqtt->loopForever(); ?>
上記のコードは、 MQTT ブローカーに接続し、メッセージをパブリッシュし、特定のトピックに関するメッセージをサブスクライブします。
この記事では、PHP を使用して MQTT ベースのクライアント コードを実装する方法を紹介しました。 MQTT プロトコル仕様の基本と、Mosquitto-PHP
拡張機能を使用して MQTT ブローカーにアクセスすることを学びました。実際の開発では、この知識を使用して、ハードウェア デバイスと通信するアプリケーションを開発できます。この記事が、MQTT プロトコルを介して通信する開発者にとって役立つことを願っています。
以上がPHP を使用して MQTT ベースのクライアントを実装する方法 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。