PHPMQTT v1.1.4 版本发布,MQTT 协议解析 & 协程客户端

简介: 在 v1.1.4 版本中,优化了重连的逻辑,增加了reconnect_delay配置参数,让用户自己设置重连的延时时间。

在 v1.1.4 版本中,优化了重连的逻辑,增加了reconnect_delay配置参数,让用户自己设置重连的延时时间。

之前的版本为固定的3s,现在默认值为3s,可以自行设置

use Simps\MQTT\Client;
use Swoole\Coroutine;
Coroutine\run(function () {
    $config = [
        'host' => '127.0.0.1',
        'port' => 1883,
        'user_name' => '',
        'password' => '',
        'client_id' => \Simps\MQTT\Client::genClientID(),
        'keep_alive' => 10,
        'reconnect_delay' => 5,
    ];
    $swooleConfig = [
        'open_mqtt_protocol' => true,
        'package_max_length' => 2 * 1024 * 1024,
        'connect_timeout' => 1.0,
    ];
    $client = new Client($config, $swooleConfig);
});

优化了 connect 和 publish 的逻辑,增加了一些限制:

  1. 在 MQTT 的协议中是不支持 QoS 大于 3 的,MQTT5 中会返回相应的错误码0x9B表示不支持的 QoS,但是在 MQTT3 中就没有对应响应,通过抓包会发现其实是一直在重连的
include __DIR__ . '/examples/bootstrap.php';
use Simps\MQTT\Client;
use Swoole\Coroutine;
Coroutine\run(function () {
    $client = new Client(getTestConnectConfig(false), SWOOLE_MQTT_CONFIG);
    $will = [
        'topic' => 'simps-mqtt/user001/update',
        'qos' => 3,
        'message' => 'byebye',
    ];
    $res = $client->connect(false, $will);
    var_dump($res);
});

所以直接限制在 MQTT3 设置大于 QoS2 的等级


PHP Fatal error:  Uncaught Simps\MQTT\Exception\ProtocolException: QoS 3 not supported

2.同样的,在 MQTT5 中 publish 可以通过topic_alias来进行发布,此时的topic可以为空,但是 MQTT3 中没有topic_alias的功能,所以就不支持发布topic为空的消息

include __DIR__ . '/examples/bootstrap.php';
use Simps\MQTT\Client;
use Swoole\Coroutine;
Coroutine\run(function () {
    $client = new Client(getTestConnectConfig(false), SWOOLE_MQTT_CONFIG);
    $client->connect();
    var_dump($client->publish('', 'hello'));
});
PHP Fatal error:  Uncaught Simps\MQTT\Exception\ProtocolException: Protocol Error, Topic canno
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
数据采集 传感器 监控
Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
815 6
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
数据可视化 关系型数据库 MySQL
嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化
通过本文的介绍,我们详细讲解了如何结合嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议,实现数据的采集、传输、存储和可视化。这种架构在物联网项目中非常常见,可以有效地处理和展示实时数据。希望本文能帮助您更好地理解和应用这些技术,构建高效、可靠的数据处理和可视化系统。
989 82
|
监控 安全 Java
Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
2947 0
|
存储 数据库 对象存储
新版本发布:查询更快,兼容更强,TDengine 3.3.4.3 功能解析
经过 TDengine 研发团队的精心打磨,TDengine 3.3.4.3 版本正式发布。作为时序数据库领域的领先产品,TDengine 一直致力于为用户提供高效、稳定、易用的解决方案。本次版本更新延续了一贯的高标准,为用户带来了多项实用的新特性,并对系统性能进行了深度优化。
498 3
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
750 2
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
995 5
|
数据处理 Python
深入探索:Python中的并发编程新纪元——协程与异步函数解析
深入探索:Python中的并发编程新纪元——协程与异步函数解析
262 3
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
1539 0

推荐镜像

更多
  • DNS