simps/mqtt v1.1.1 版本发布,支持 MQTT5 中的大部分 Property

简介: 在 MQTT 5.0 协议中增加了很多属性。

在 MQTT 5.0 协议中增加了很多属性。不同的报文类型之间,属性也会不同,一共有 27 种属性

CONNECT,CONNACK,PUBLISH,PUBACK,PUBREC,PUBREL,PUBCOMP,SUBSCRIBE,SUBACK,UNSUBSCRIBE,UNSUBACK,DISCONNECT 和 AUTH 数据包的可变报头中的最后一个字段是一组属性。在 CONNECT 数据包中,有效载荷的 Will Properties 字段中还有一组可选的 Properties


6.1.png


6.2.png

上个版本中也支持了几个属性,不过有些缺陷,代码中存在大量的 if else,造成了太多的重复代码

因为具有不同标识符的属性的顺序没有意义,所以此版本进行了重构,除了AUTHENTICATION_DATA(0x16)CORRELATION_DATA(0x09)以外,支持了 25 种属性,也减少了相关代码量

在一些实际的场景中,还需要通过后台来给客户端发布消息,想要直接在 fpm 中给客户端 publish 消息的话,直接使用协程客户端是不可能的,所以在此版本中还增加了同步阻塞的客户端,用于在 fpm 中发布消息

use Simps\MQTT\Client;
/**
 * Support publish in fpm, need to specify clientType as Client::SYNC_CLIENT_TYPE
 */
$client = new Client(getTestConnectConfig(), SWOOLE_MQTT_CONFIG, SWOOLE_SOCK_TCP, Client::SYNC_CLIENT_TYPE);
$client->connect();
$response = $client->publish('simps-mqtt/user001/update', '{"time":' . time() . '}', 1);
var_dump($response);

下面是完整的更新日志

增强功能


  • 支持了在fpm中发布消息 (#13)
  • 支持了更多的属性 (#15)
  • 添加了 ProtocolInterface (0e7c353)
  • 优化重复代码 (#12)

修复


  • 修复 SOCKET_ECONNRESET (#6)


关于 simps/mqtt


适用于 PHP 的 MQTT 协议解析和协程客户端,第一个支持 MQTT v5.0 协议的 PHP library。

同时支持 MQTT 协议 3.1、3.1.1 和 5.0 版本,支持 QoS 0、QoS 1、QoS 2。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
4月前
|
消息中间件 Java Spring
RocketMQ-JAVA客户端不同版本接入方式
RocketMQ4.0 RocketMQ5.0 JAVA接入 spring springboot
RocketMQ-JAVA客户端不同版本接入方式
|
11月前
|
消息中间件 存储 Kubernetes
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
k8s1.20版本部署RabbitMQ集群(持久化)——2023.05
547 1
|
消息中间件 容器
【MQ系列】查看RabbitMQ的版本号
如果上述报错,则试试下面的方法。
1034 0
【MQ系列】查看RabbitMQ的版本号
|
14天前
|
消息中间件 Linux API
centos7 安装rabbitmq自定义版本及配置
centos7 安装rabbitmq自定义版本及配置
|
14天前
|
消息中间件 SQL 监控
RocketMQ 5.3.0 版本中 Broker IP 配置为 IPv6 的情况
【8月更文第28天】RocketMQ 是一款分布式消息中间件,支持多种消息发布和订阅模式。在 RocketMQ 5.3.0 版本中,Broker 的配置文件 `broker.conf` 允许配置 IPv6 地址。当 Broker 的 `brokerIP1` 配置为 IPv6 地址时,会对 Broker 的启动、消息推送和状态监控等方面产生影响。本文将探讨如何在 RocketMQ 中配置 IPv6 地址,并检查 Broker 的状态。
50 0
|
3月前
|
消息中间件 RocketMQ
RocketMQ不同版本的下载
RocketMQ不同版本的下载
|
3月前
|
消息中间件
Rabbitmq与Erlang对应版本关系
Rabbitmq与Erlang对应版本关系
|
4月前
|
消息中间件 RocketMQ
在RocketMQ 5.1.0版本中,当Broker的`enableControllerMode`配置为true时
在RocketMQ 5.1.0版本中,当Broker的`enableControllerMode`配置为true时
176 1
|
4月前
|
弹性计算 前端开发 Java
使用阿里云 mqtt serverless 版本超低成本快速实现 webscoket 长链接服务器
使用阿里云 MQTT Serverless 可轻松实现弹性伸缩的 WebSocket 服务,每日成本低至几元。适用于小程序消息推送的 MQTT P2P 模式。前端需注意安全,避免 AK 泄露,采用一机一密方案。后端通过调用 `RegisterDeviceCredential` API 发送消息。示例代码包括 JavaScript 前端连接和 Java 后端发送。
347 0
|
4月前
|
Ubuntu 网络安全 Windows
ubuntu16.04版本安装emqx的mqtt服务
ubuntu16.04版本安装emqx的mqtt服务