検索
ホームページPHPフレームワークThinkPHPmqtt を使用した thinkphp について

mqtt を使用した thinkphp について

Dec 24, 2020 pm 03:14 PM
mqttthinkphp

以下は、thinkphp フレームワーク チュートリアルのコラムから、mqtt を使用した thinkphp の紹介です。困っている友人の役に立てば幸いです。

最近、mqttを使ったプロジェクトを進めていて、ネット上でサンプルをたくさん見たのですが、よく理解できませんでした(たぶん私がバカなので)が、後で解決したのでここに記録します。あまり上手ではないので忘れないように。もし書き間違いがあればメッセージを残してアドバイスをいただければ幸いです。

最初の準備は環境と枠組みです。また、ほとんど同じネイティブのものを使用してください。

環境私は contOs7 を使用しており、それをインストールしています。mosquitto 環境で使用される mqtt インストール チュートリアルはここにあります (パスワードを設定することを忘れないでください。関連する権限は設定されていません)

フレームワーク TP5.0 フレームワークを使用しています

Connect 以下は開発プロセスです

1 MQTT クラスをダウンロードしますそれをプロジェクトのルート ディレクトリの extend フォルダーに置きます。当初は、これを csdn リソースに置き、誰もが勤勉に 1 ポイントを獲得できるようにしたいと考えていました。意外なことに、デフォルトは 5 ポイントです。Git に行くのが面倒でポイントが多すぎる場合は、リソース アドレスをクリックして、全員に Git アドレスを教えてください。Git アドレスは: https://github.com/bluerhinos /phpMQTT,

2 次に MQtt クラスの紹介

次はパブリッシュとサブスクライブのコード ブロックです MQTT 情報の Qos レベルについては、興味があれば検索してください

<?php
namespace app\index\model;
use Bluerhinos\phpMQTT;
use think\Model;
class Mqtt extends Model
{
    /**
     * MQTT发送信息
     * @param $id   发布消息的ID 订阅ID需要与发布ID一致才能接受信息 topic为发布给全部
     * @param $info 发布的信息
     */
    public function pus($id,$info){
        //使用require_once 引入 MQTT 的类
        require_once (EXTEND_PATH.&#39;/phpMQTT-master/phpMQTT.php&#39;);
        $host = "";     // change if necessary   IP
        $port = 1883;                     // change if necessary    端口默认1883
        $username = "";                   // set your username 用户名
        $password = "";                   // set your password 密码
        $message = $info; //要发送的消息
        //phpMQTT有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQT类
        //没有证书的时候只能连接1883端口,不能连接8883端口。
        //第三个参数为客户端ID 不可重复
        $mqtt = new phpMQTT($host, $port, "ClientID" . rand());
        //连接
        if ($mqtt->connect(true, NULL, $username, $password)) {

            //发送信息  第三个参数为Qos服务质量等级
            //Qos0   发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,Broker可能没有接受到消息
            //Qos1   发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息PUBACK。在Qos1情况下,Broker可能接受到重复消息
            //Qos2   Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次
            $mqtt->publish($id, $message, 0);
            $mqtt->close(); //关闭
        } else {
            echo "Fail or time out<br />";
        }
    }

    /**

     * 要使用命令行运行此方法!!!   

     *  think5.0 运行方法为 cd到Public 目录  然后  php index.php 模块/控制器/方法

     * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。
     * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。
     * 请在相应的位置放入phpMQTT的库
     * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php
     * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错
     */
    public function sub(){
        require_once (EXTEND_PATH.&#39;/phpMQTT-master/phpMQTT.php&#39;);
        $server = "";     // change if necessary 服务器IP
        $port = 1883;                     // change if necessary    端口 一般是1883
        $username = "";                   // set your username mosquitto设置的用户名
        $password = "";                   // set your password mosquitto设置的密码
        $client_id = "clientx9293670xxctr".rand(1213333123,123123333); //你的连接客户端id

        $mqtt = new phpMQTT($server, $port, $client_id);    //进行连接

        if(!$mqtt->connect(true, NULL, $username, $password)) {
            exit(&#39;error&#39;);   //连接失败
        } else {
            echo "success"; //连接成功
        }
        //topics["topic"]  为接受的主题名  需要和发送的主题名一致  否则会订阅不到
        //订阅信息 Qos为信息登记,需要和发送的等级一致
        $topics["topic"] = array("qos" => 0, "function" =>array($this,"onMessage"));

        $mqtt->subscribe($topics, 0);

        //死循环监听
        while($mqtt->proc()){

        }
        $mqtt->close();
    }
    /**
     * 在此处接MQtt的信息 进行业务处理
     * @param $topic
     * @param $msg
     */
    function onMessage($topic,$msg){
    	$msg = json_decode($msg,true);
        //我把数据传递到了另一个方法进行处理  可以在处理完逻辑业务之后 再次调用发布方法  去给订阅方发布消息
        $this->index($msg);   
    }
}

サブスクリプションを使用する場合は、コマンド ラインで実行することを忘れないでください。 thinkphp の実行例は、まずプロジェクトのパブリック ディレクトリに cd で移動し、次に phpindex.php module/controller/method# を実行します。

##実行後に成功に戻ります。テストしたい場合は、mqtt.fx ソフトウェアのアドレスを使用できます。アドレスは http://www.jensd.de/apps/mqttfx/ です。私は 1.7.1 を使用しています。クリックすると、下に Windows リンクがあり、クリックしてダウンロードできます。これを使用する場合、

構成は

を使用してソフトウェアを開きます。インターフェイスは次のとおりです

mqtt を使用した thinkphp について

次に、[接続の編集]

mqtt を使用した thinkphp について

を選択し、対応するプロファイル名、ブローカー アドレス、およびブローカー ポートを入力します (変更した場合、デフォルトは 1883) , クライアント ID は、[生成] ボタンをクリックすると自動的に生成できます。編集後、「保存」をクリックして編集インターフェースを終了します。

mqtt を使用した thinkphp について

その後、メイン インターフェイスのドロップダウン ボックスに移動し、構成したプロファイル名 (172.16.0.121) を選択し、[接続] ボタンをクリックして接続します。サービスに。接続が成功したら、[購読] オプションをクリックし、下のドロップダウン ボックスでトピックを選択し (または、i like mqtt などのトピックを自分で作成し)、[購読] ボタンをクリックします。

mqtt を使用した thinkphp について

[公開] オプションに戻り、ドロップダウン ボックスでトピックを選択します (または、[購読] オプションと同じトピックを作成します)。ここで、下の入力領域に送信したいメッセージを書き込むことができます (wo ai mqtt など、サブスクライバーのメッセージ表示では中国語が文字化けします)。ここでのメッセージは複数の形式をサポートしており、[公開] ボタンをクリックします。

mqtt を使用した thinkphp について

最後に、[購読] オプションに戻り、メッセージが正常に受信されたかどうかを確認します。図に示すように、パブリッシャー (wo ai mqtt) によって送信されたメッセージは、無事に受信されました。

mqtt を使用した thinkphp について

対応するメッセージ デコーダ (テキスト形式、JSON 形式、Base64 エンコード、16 進エンコード、Sparkplug エンコード) を選択することもできます。

以上がmqtt を使用した thinkphp についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はcsdnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
ThinkPHPの組み込みテストフレームワークの主な機能は何ですか?ThinkPHPの組み込みテストフレームワークの主な機能は何ですか?Mar 18, 2025 pm 05:01 PM

この記事では、ThinkPHPの組み込みテストフレームワークについて説明し、ユニットや統合テストなどの主要な機能と、早期のバグ検出とコード品質の向上を通じてアプリケーションの信頼性を高める方法について強調しています。

リアルタイムの株式市場データフィードを構築するためにThinkPhpを使用する方法は?リアルタイムの株式市場データフィードを構築するためにThinkPhpを使用する方法は?Mar 18, 2025 pm 04:57 PM

記事では、リアルタイムの株式市場データフィードにThinkPhpを使用して、セットアップ、データの正確性、最適化、セキュリティ対策に焦点を当てて説明します。

サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか?サーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項は何ですか?Mar 18, 2025 pm 04:54 PM

この記事では、パフォーマンスの最適化、ステートレス設計、セキュリティに焦点を当てたサーバーレスアーキテクチャでThinkPhpを使用するための重要な考慮事項について説明します。コスト効率やスケーラビリティなどの利点を強調しますが、課題にも対処します

ThinkPhpマイクロサービスでサービスの発見と負荷分散を実装する方法は?ThinkPhpマイクロサービスでサービスの発見と負荷分散を実装する方法は?Mar 18, 2025 pm 04:51 PM

この記事では、セットアップ、ベストプラクティス、統合方法、および推奨ツールに焦点を当てたThinkPhpマイクロサービスにサービスの発見と負荷分散の実装について説明します。[159文字]。

ThinkPhpの依存関係噴射コンテナの高度な機能は何ですか?ThinkPhpの依存関係噴射コンテナの高度な機能は何ですか?Mar 18, 2025 pm 04:50 PM

ThinkPHPのIOCコンテナは、PHPアプリで効率的な依存関係管理のための怠zyなロード、コンテキストバインディング、メソッドインジェクションなどの高度な機能を提供します。

リアルタイムのコラボレーションツールを構築するためにThinkPhpを使用する方法は?リアルタイムのコラボレーションツールを構築するためにThinkPhpを使用する方法は?Mar 18, 2025 pm 04:49 PM

この記事では、ThinkPhpを使用してリアルタイムのコラボレーションツールを構築し、セットアップ、Websocket統合、セキュリティベストプラクティスに焦点を当てて説明します。

SaaSアプリケーションを構築するためにThinkPhpを使用することの主な利点は何ですか?SaaSアプリケーションを構築するためにThinkPhpを使用することの主な利点は何ですか?Mar 18, 2025 pm 04:46 PM

ThinkPhpは、軽量のデザイン、MVCアーキテクチャ、および拡張性を備えたSaaSアプリに利益をもたらします。スケーラビリティを向上させ、開発を速め、さまざまな機能を通じてセキュリティを改善します。

ThinkPhpとRabbitmqを使用して分散タスクキューシステムを構築する方法は?ThinkPhpとRabbitmqを使用して分散タスクキューシステムを構築する方法は?Mar 18, 2025 pm 04:45 PM

この記事では、ThinkPhpとRabbitMQを使用して分散タスクキューシステムの構築を概説し、インストール、構成、タスク管理、およびスケーラビリティに焦点を当てています。重要な問題には、Immedのような一般的な落とし穴を避けるための高可用性の確保が含まれます

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。