iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >thinkphp6.0连接mqtt进行通信
  • 655
分享到

thinkphp6.0连接mqtt进行通信

php开发语言 2023-09-07 13:09:04 655人浏览 安东尼
摘要

一、引入MQtt库 git地址:https://github.com/bluerhinos/phpMQTT 我这边没用composer引入,直接把库里面的PHPMQtT.php代码复制出来,改了个名字

一、引入MQtt库

git地址:https://github.com/bluerhinos/phpMQTT

我这边没用composer引入,直接把库里面的PHPMQtT.php代码复制出来,改了个名字叫MqttNewService

二、thinkphp6.0创建一个接收数据的脚本

1、创建一个自定义命令类文件,运行指令

php think make:command Mqtt mqtt

2、配置config/console.php文件

return [    // 指令定义    'commands' => [        'mqtt' => 'app\command\Mqtt'    ],];

三、用到的php函数

bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
pack() 函数把数据装入一个二进制字符串。

因为我这边是和硬件通信,所有消息都是16进制的,所以需要用的这两个函数,如果你的业务使用string或者JSON,那就不需要使用这两个函数了,可以把下面代码里面对应的函数删掉

四、订阅接收消息

;use think\console\Command;use think\console\Input;use think\console\Output;use app\common\service\MqttNewService;class Mqtt extends Command{    protected function configure()    {        // 指令配置        $this->setName('mqtt')            ->setDescription('the mqtt command');    }    protected function execute(Input $input, Output $output)    {        $this->subscribe();    }    //订阅接收消息    protected function subscribe()    {        $server   = 'xx.com';        $port     = 1883;        $clientId = 'test_emqx'. rand(1000000, 99999999);        $topic    = "test-mqtt-12345";        $username = "";        $pwd      = "";        $mqtt = new MqttNewService($server, $port, $clientId);        if(!$mqtt->connect(true, NULL, $username, $pwd)) {            exit(1);        }        $mqtt->debug = true;        $topics[$topic] = array('qos' => 0, 'function' => array($this,"procMsg"));        $mqtt->subscribe($topics, 0);        while($mqtt->proc()) {        }        $mqtt->close();    }    function procMsg($topic, $msg){        $msg = bin2hex($msg);        echo $msg. "\n";    }}
项目下使用php think mqtt将这个脚本运行起来,然后用MQTTX软件发送消息进行测试MQTTX是用来测试mqtt的软件,下载地址:https://www.emqx.com/zh/products/mqttx

在这里插入图片描述

在这里插入图片描述

可以看到脚本已经接收到了数据

五、发布消息

    //发布消息    public function publish()    {        $msg = input('msg');        $server = 'xx.com';        $port = 1883;        $username = '';        $passWord = '';        $clientId = 'test_emqx'. rand(1000000, 99999999);        $mqtt = new MqttNewService($server, $port, $clientId);        if ($mqtt->connect(true, NULL, $username, $password)) {            $mqtt->publish('test-mqtt-12345', pack('H*',$msg), 0, false);            $mqtt->close();        } else {            echo "Time out!\n";        }    }

在这里插入图片描述

在这里插入图片描述

使用postman测试这个接口,正常收到了数据,如有问题,可以下面留言

来源地址:https://blog.csdn.net/LuoHuaX/article/details/129286593

--结束END--

本文标题: thinkphp6.0连接mqtt进行通信

本文链接: https://www.lsjlt.com/news/398262.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • thinkphp6.0连接mqtt进行通信
    一、引入mqtt库 git地址:https://github.com/bluerhinos/phpMQTT 我这边没用composer引入,直接把库里面的phpMQTT.php代码复制出来,改了个名字...
    99+
    2023-09-07
    php 开发语言
  • 小程序连接MQTT进行通信(保证能用)
    一、MQTT通信介绍 MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联...
    99+
    2023-08-17
    小程序
  • 用 Python 进行 MQTT 通信
    用 Python 进行 MQTT 通信 简介 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,常用于物联网设备之间的通信。Python 提...
    99+
    2023-09-14
    python 网络
  • 如何进行socket通信
    本篇文章为大家展示了如何进行socket通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、使用socket实现一对一的简单通信  socket就是一个开往网络应用必备的功能模块。通过这...
    99+
    2023-06-04
  • 在使用socket进行通信连接时出现java.net.SocketException: Connection reset的解决方案
    产生原因 在创建客户端和服务端后,出现java.net.SocketException: Connection reset的错误。 导致的原因 客户端或者服务端其中一端还在传输数据的途中...
    99+
    2023-09-12
    java
  • Android进程间使用Intent进行通信
    安卓使用Intent来封装程序的“调用意图”,使用Intent可以让程序看起来更规范,更易于维护。 除此之外,使用Intent还有一个好处:有些时候我们只是想...
    99+
    2023-02-28
    Android Intent通信 Android进程通信
  • Angular组件如何进行通信
    小编给大家分享一下Angular组件如何进行通信,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!准备一下我们的环境:1、创建一个h...
    99+
    2024-04-02
  • Electron+React进行通信的方法
    目录1.前言:2.一些理解:3.数据交互4.前后端交互5.一些代码举例:1.前言: Electron是使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 项目...
    99+
    2024-04-02
  • 如何进行TCP通信实现
    本篇文章给大家分享的是有关如何进行TCP通信实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。TCP是底层通讯协议,定义的是数据传输和连接方式的规范。TCP协议,传输控制协议(...
    99+
    2023-06-05
  • python通过远程连接mysql数据库进行操作
    文章目录 前言一、开启远程访问权限1、开启远程访问端口2、命令行登录mysql 二、Navicat 建库1、新建连接2、建库建表 三、python对数据库进行远程操作三、总结四、参考资...
    99+
    2023-09-20
    数据库 python mysql
  • html5怎么通过postMessage进行跨域通信
    本篇内容主要讲解“html5怎么通过postMessage进行跨域通信”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“html5怎么通过postMessage进行...
    99+
    2024-04-02
  • html5怎样通过postMessage进行跨域通信
    小编给大家分享一下html5怎样通过postMessage进行跨域通信,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!最近工作中遇到一个需求,场景是:h6页作为预览模块内嵌在pc页中,用户在...
    99+
    2024-04-02
  • html5如何通过postMessage进行跨域通信
    这篇文章主要介绍html5如何通过postMessage进行跨域通信,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!工作中遇到一个需求,场景是:h6页作为预览模块内嵌在pc页中,用户在...
    99+
    2024-04-02
  • Java Socket通讯如何进行客户端的信息通信
    本篇文章为大家展示了Java Socket通讯如何进行客户端的信息通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java Socket通讯在实际的使用中有很多关键代码需要我们学习,那么首先我们就...
    99+
    2023-06-17
  • 如何进行OpenResty连接Mysql
    本篇文章为大家展示了如何进行OpenResty连接Mysql,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。centos 安装myslCentos系统下安装mysql,先下载mysql-communi...
    99+
    2023-06-19
  • mysql怎么进行表连接
    这篇文章主要介绍mysql怎么进行表连接,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在数据库中,select语句不仅可以查询表中信息,还可以用来查询多个表的信息,将查询到...
    99+
    2024-04-02
  • vue组件间如何进行通信
    本篇内容介绍了“vue组件间如何进行通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue是数据驱动视图更新的框架, 我们平时开发,都会把...
    99+
    2023-06-21
  • Android怎么使用GRPC进行通信
    这篇文章主要介绍“Android怎么使用GRPC进行通信”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么使用GRPC进行通信”文章能帮助大家解决问题。引言Android作为一个开发平...
    99+
    2023-07-05
  • Android进程间如何使用Intent进行通信
    这篇文章主要介绍“Android进程间如何使用Intent进行通信”,在日常操作中,相信很多人在Android进程间如何使用Intent进行通信问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android进程...
    99+
    2023-07-05
  • 怎么进行php短信接口
    怎么进行php短信接口,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP短信接口是开发商城网站,APP平台必不可少的,因为这些网站社区或是平台都需要用户进行注册 或是登录那么...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作