thinkphp链接mqtt服务器,然后在订阅下发布消息

cmd打开项目根目录,安装插件,执行下面的命令

composer require php-mqtt/client

执行完成之后会在vendor 目录下有php-mqtt 文件
在这里插入图片描述

然后在你的 extend文件下 新建mqtt文件 在文件中新建 Mqtt.php 下面是代码
在这里插入图片描述

<?php
/** @S: ========================================================* @Name: 控制器: * @Author: Fu* @Date: 2022-03-25 14:20:58* @FilePath: /hezonyuyin/extend/mqtt/Mqtt.php* @E: ========================================================*/
namespace mqtt;use PhpMqtt\Client\MQTTClient;
class Mqtt
{private $server;private $port;private $clientId;private $username;private $password;private $clean_session;public function __construct($server = '', $port = '', $clientId = '', $username = '', $password = '', $clean_session = ''){$this->server =  '127.0.0.1';//这里是你的服务器地址$this->port =  1883;$this->clientId =  'php-'.uniqid();$this->username =  'emqx_user';$this->password =  NULL;$this->clean_session  =  FALSE;}/*** @S: -------------------------------* @Name: 方法: 连接MQTT* @Author: Fcy* @param {*}* @return {*}* @Date: 2022-03-31 09:26:12* @E: -------------------------------*/    public function mqtt(){$mqtt = new MqttClient($this->server, $this->port, $this->clientId);$mqtt->connect($this->username, $this->password);$mqtt->loop(true);}/*** @S: ------------------------------* @Name: 方法: 发布订阅* @Author: Fcy* @param {*}* @return {*}* @Date: 2022-03-25 14:22:42* @E: -------------------------------*/    public function publish($topic,$content){$mqtt = new MqttClient($this->server, $this->port, $this->clientId);$mqtt->connect($this->username, $this->password);$mqtt->publish($topic,$content,0,true);}}

在项目的控制器的方法里,实现发布消息,方法如下

<?php
namespace app\facemqtt\controller;use think\Controller;
//引入extend文件夹里的类
use mqtt\Mqtt;
class Index extends Controller
{public function indexpage(){$this->push('topic');return 123;}private function push($topic, $data = []){$mqtt = new Mqtt();$content = json_encode(['type' => 123,'time' => time(),'msg'  => '你好!',]);//发布订阅消息,$topic 是主题,$content是发布的消息//然后订阅的这个主题的程序,就会收到$content消息$mqtt->publish($topic, $content);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/154998.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

真心话坦白局系统源码

它具有匿名信息的神秘感 但又会给你一点小提示 能让你有无限挖掘下去的好奇感 也能让你说出那些不敢说出口的话 敢来一场坦白局吗&#xff01; 坦白局这个功能类似于悄悄话&#xff0c;只不过是匿名的悄悄话。 有时候我们有些话是开不了口的&#xff0c;坦白局给了我们一个…

图的深度优先遍历的六种应用附Java代码

目录 无向图的连通分量个数 单纯求出了连通分量个数 能具体返回哪几个点是同一个连通分量 路径问题 单源路径问题 从某个顶点到另一个顶点的路径问题 检测无向图中的环 二分图的检测 无向图的连通分量个数 单纯求出了连通分量个数 import java.util.ArrayList;publi…

数据库分库分表的原则

目录 1、数据库分库分表是什么 2、为什么要对数据库分库分表 3、何时选择分库分表 4、⭐分库分表遵循的原则 5、分库分表的方式 6、数据存放在表和库中的规则&#xff08;算法&#xff09; 7、分库分表的架构模式 8、分库分表的问题 小结 1、数据库分库分表是什么 数…

Simulink的To Workspace

To Workspace模块将Simulink产生的数据存储到matlab的工作区。 用To Workspace模块中的数据进行绘图。 参见Matlab/simulink/simscape multibody-to wotkspace模块使用_to workspace模块_五VV的博客-CSDN博客

AGRCZO-A-20/210先导比例减压阀控制器

AGRCZO-A-10/100、AGRCZO-A-20/210、AGRCZO-A-10/50、AGRCZO-A-20/350、AGRCZO-A-10/315、AGRCZO-A-20/100数字型比例减压阀&#xff0c;先导式&#xff0c;用于压力开环控制。A型&#xff0c;与分体式放大器配合使用AEB型&#xff0c;带基本型集成式数字放大器&#xff0c;模拟…

518抽奖软件,为什么说比别的抽奖软件更美观精美?

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 精致美观功能 字体平滑无锯齿图片放大后清晰…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-远程桌面屏幕监控

红队专题 招募六边形战士队员[24]屏幕监控-(1)屏幕查看与控制技术的讲解图像压缩算法图像数据转换其他 [25]---屏幕监控(2)查看屏幕的实现7.1 屏幕抓图显示7.7 完善主控端 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 [24]屏幕监控-(1…

【已解决】VSCode运行C#控制台乱码显示

问题描述 如上图所示&#xff0c;最近在学习C#突然发现我在运行Hello World的时候出现这样的乱码情况。 分析原因 主要是因为VS Code 是UTF-8的编码格式&#xff0c;而我们的PC是Unicode编码&#xff0c;所以我们需要对其进行一个统一即可解决问题。那么知道这个的问题那就开…

Redis队列Stream

1 缘起 项目中处理文件的场景&#xff1a; 将文件处理请求放入队列&#xff0c; 一方面&#xff0c;缓解服务器文件处理压力&#xff1b; 另一方面&#xff0c;可以根据文件大小拆分到不同的队列&#xff0c;提高文件处理效率。 这是Java开发组Leader佳汇提出的文件处理方案&a…

创建并启动华为HarmonyOS本地与远程模拟器及远程真机

1.打开设备管理器 2.选择要添加的手机设备,然后点击安装 3.正在下载华为手机模拟器 4.下载完成 5.创建新模拟器 下载系统镜像 点击下一步,创建模拟器 创建成功 启动模拟器 华为模拟器启动成功 6.登陆华为账号并使用远程模拟器 7.使用远程真机

成绩不公开,如何发成绩

亲爱的老师们&#xff0c;有没有在学期中疯狂整理成绩单&#xff0c;又担心成绩私发引起混乱的烦恼&#xff1f;今天就让我们一起探索如何利用各种工具和代码&#xff0c;实现学生自主查询成绩的便捷方式吧&#xff01; 成绩查询系统简介 成绩查询系统是一款方便学生和老师查询…

如果一定要在C++和JAVA中选择,是C++还是java?

如果一定要在C和JAVA中选择&#xff0c;是C还是java&#xff1f; 计算机专业的同学对这个问题有疑惑的&#xff0c;- 定要看一下这个回答! 上来直接给出最中肯的建议: 如果你是刚刚步入大学的大一时间非常充裕的同学&#xff0c;猪学长强烈建议先学C/C.因为C 非常 最近很多…