php 使用mqtt,ThinkPHP3.2中使用phpMQTT

直接上干货!

/*

* 作者 : 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值