关于thinkphp使用mqtt

下面由thinkphp框架教程栏目给大家介绍thinkphp使用mqtt,希望对需要的朋友有所帮助!

最近在做一个项目使用到mqtt,网上看到很多例子 都看的不太明白(大概因为我笨)不过后来还是处理好了,就在这里记录下以免忘记  因为不是很精通,看到有哪里写的错误的可以留言指点

首先准备工作就是  环境  以及框架,各位也可以用原生,差不太多

环境   我使用的是contOs7  安装了mosquitto环境 使用的mqtt  安装教程在 这里(记得设置密码,有关权限的还没做,本文章就没写)

框架    我使用的是TP5.0的框架

接下里就是开发流程

立即学习“PHP免费学习笔记(深入)”;

1   下载MQTT类然后放到了项目根目录下的 extend文件夹 ,本来想放在csdn资源让大家下 赚个1积分辛苦费。没想到默认就是5积分,懒得去Git而且分多的欢迎点击资源地址 ,然后把Git地址给大家了 Git地址是:https://github.com/bluerhinos/phpMQTT,

2    然后引入MQtt类

   接下来是发布和订阅的代码块    关于MQTT信息Qos等级,有兴趣的可以去搜索一下  

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
";        }    }    /**     * 要使用命令行运行此方法!!!        *  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.'/phpMQTT-master/phpMQTT.php');        $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('error');   //连接失败        } 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到项目的public目录然后执行    php index.php 模块/控制器/方法

执行后返回 sucess    如果要测试的话 可以使用  mqtt.fx 软件 地址为 http://www.jensd.de/apps/mqttfx/  我使用的是1.7.1  点进去后下面有个windows的链接 点击下载就行了 ,使用的话

配置使用
打开软件,界面如下图

在这里插入图片描述

然后选择编辑连接

在这里插入图片描述

填写相应的Profile Name,Broker Address和Broker Port(如果修改过的话,默认是1883),Client ID可以点击Generate按钮自动生成。编辑完之后点击保存退出编辑界面。

在这里插入图片描述

之后到主界面的下拉框选择刚才配置的Profile Name名称(172.16.0.121),然后点击Connect(连接)按钮进行服务连接。连接成功后,再点击Subscribe(订阅)选项,在下方的下拉框中选择主题(或者自己创建一个主题,如i like mqtt),之后点击后面的Subscribe(订阅)按钮。

在这里插入图片描述

再回到Publish(发布)选项,在下拉框中选择一个主题(或创建一个与Subscribe(订阅)选项中一样的主题)。现在可以在下方的输入区域写上你要发送的消息(如wo ai mqtt,中文在订阅者的消息显示上会乱码),这里的消息支持多种格式,然后点击Publish(发布)按钮。

在这里插入图片描述

最后再回来Subscribe(订阅)选项中查看消息是否接收成功,如图所示已经成功接收到发布者发送的消息(wo ai mqtt)。

在这里插入图片描述

还可以选择对应的消息解码器(文本格式,JSON格式,Base64编码,十六进制编码,Sparkplug编码)

 

以上就是关于thinkphp使用mqtt的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3042812.html

(0)
上一篇 2025年3月13日 14:30:42
下一篇 2025年2月26日 03:16:41

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论