当前位置: 首页 > 后端技术 > PHP

PHPMQTTv1.3.2发布,优化MQTT5相关支持

时间:2023-03-29 19:21:48 PHP

增加toArray方法之前的版本在getContents方法中增加了一个getArray参数,供客户端回复对端ACK。本版本新增toArray方法获取:useSimps\MQTT\Message;使用Simps\MQTT\Protocol\ProtocolInterface;$message=newMessage\Publish();$message->setProtocolLevel(ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0)->setTopic('simps/mqtt/message')->setQos(ProtocolInterface::MQTT_QOS_1)->setDup(ProtocolInterface::MQTT_DUP_0)->setRetain(ProtocolInterface::MQTT_RETAIN_0)->setMessage('这是内容')->setMessageId(1)->setProperties(['message_expiry_interval'=>100]);$array1=$message->getContents(true);$array2=$message->toArray();assert($array1===$array2);两者都有相同的结果。优化getProtocolLevel为MQTT5协议增加了一个Properties属性,该属性在MQTT3.x中不可用。如果之前的版本是MQTT5协议,需要手动调用setProtocolLevel设置协议级别。本版本新增优化:判断是否设置Properties属性,如果设置但协议级别不是MQTT5,则自动设置为MQTT5MessageuseSimps\MQTT\Message;useSimps\MQTT\Protocol\ProtocolInterface;$message=newMessage\Publish();$message->setTopic('simps/mqtt/message')->setQos(ProtocolInterface::MQTT_QOS_1)->setDup(ProtocolInterface::MQTT_DUP_0)->setRetain(ProtocolInterface::MQTT_RETAIN_0)->setMessage('这是内容')->setMessageId(1);assert($message->isMQTT5()===false);assert($message->getProtocolLevel()===ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1_1);$message->setProperties(['message_expiry_interval'=>100]);assert($message->isMQTT5()===true);assert($message->getProtocolLevel()===ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0);$message->setProtocolLevel(ProtocolInterface::MQTT_PROTOCOL_LEVEL_3_1);assert($message->isMQTT5()===true);assert($message->getProtocolLevel()===ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0);ConfiguseSimps\MQTT\Client;useSimps\MQTT\Config\ClientConfig;使用Simps\MQTT\Protocol\ProtocolInterface;$config=newClientConfig();$config->setClientId(Client::genClientID())->setKeepAlive(10)->setDelay(3000)->setMaxAttempts(5)->setProperties(['session_expiry_interval'=>100,])->setSwooleConfig(['open_mqtt_protocol'=>true,'package_max_length'=>2*1024*1024,]);assert($config->isMQTT5()===true);assert($config->getProtocolLevel()===ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0);更改日志增强添加toArray方法(b3fd28a)更新属性默认值(9c63510)添加WillMessage消息类(#45)添加AuthMessage类(36f6a9d)添加DUP、SESSION_PRESENT和RETAIN常量(fe5c418)优化getProtocolLevel(a329202)添加isMQTT5测试并使用常量代替硬编码(b9d4365)修复ReasonCode(481994f5)中的错字关于PHPMQTT适用于PHPMQTT协议解析和协程客户端,支持MQTT协议版本3.1、3.1.1和5.0,支持QoS0、QoS1、QoS2,是第一个支持MQTTv5.0的PHP库协议文档:https://mqtt.simps.ioGitHub:https://github.com/simps/mqttGitee:https://gitee.com/phpiot/mqtt支持记得点个Star~