ThinkPHP3.2中使用phpMQTT

直接上干货!

<?php
/*
* 作者    :   duerhong
* QQ    :   1186969412
* QQ群   :   536633782
*/

namespace MQTT\Controller;
use Think\Controller;
/**
 * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。
 * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。
 * 请在相应的位置放入phpMQTT的库,\Vendor\PhpMQTT\PhpMQTT
 * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php
 * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错
 * ...
 */
class SubController extends Controller{
    public function _initialize(){
        header("Content-Type:text/html; charset=utf-8");
        // 客户端id    可以用随机数
        $this->client="sub_123";
        // mqtt主机 主机,请配置为自己的主机
        $this->host = C('MQTT_HOST'); 
        // mqtt端口
        $this->port = C('MQTT_PORT');
        // 密钥 用于证书配置,如果需要ssl认证,则必须填写
        $this->cert= 'ca.pem';
        // mqtt账号
        $this->username ="";
        // mqtt密码
        $this->password = "";
        // 订阅主题 订阅的主题,注意使用的主题一定要是mqtt配置过的主题,比如百度天工需要策略认证过的
        // 自己学习的时候,可以随意自定义,一般跟发布主题一致便可以收到消息
        // 如要要接受所有主题,请使用#
        $this->topics_name="sub topic";
    }

    //运行 并且订阅
    function index(){
        // 创建mqtt实例 
        $this->mqtt = new \Vendor\PhpMQTT\PhpMQTT($this->host,$this->port,$this->client,$this->cert);

        // 若mqtt链接失败
        if(!$this->mqtt->connect(true,NULL,$this->username,$this->password)) {
            echo "mqtt链接失败!";
        }

        // 注意:这里qos的设置,有些broker限制了使用0,则可以用1试试。百度天工测试代码 则为1
        $topics[$this->topics_name] = array("qos" => 0, "function" =>array($this,"message"));
        $this->mqtt->subscribe($topics,0);
        
        while ($this->mqtt->proc()) {
        }
    }
    
    // 回调消息
    public function message($topic,$msg){
        echo "收到订阅消息 $topic:$msg \n\r";
    }

   
}

订阅请在命令行单独起进程运行
TP5+laravel等有问题可以联系作者

大早上赶时间整理的代码,如果有问题联系qq:1186969412

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,699评论 25 708
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,019评论 3 119
  • 如果想要获得成长,需要进入一段关系之中,不管是父母、朋友、恋人还是其他,与每个人的相处方式,代表着你与这个世界的相...
    笔尖上起舞阅读 489评论 4 1
  • 旋转的足球在落地之前,你,永远也猜不到接下来会发生什么~ 今晚的世界杯决赛,真是精彩纷呈的一场好戏。有让人哭笑不得...
    逝水v无痕阅读 2,391评论 0 1
  • 就在两天前,趁着周末的空儿,带着你到相馆去拍照。 走进相馆,看到脖子上挂着相机的叔叔,你的眼睛里,划过...
    燕语诗心阅读 315评论 0 3