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

PHPMQTTv1.3.0发布,MQTT协议解析&协程客户端

时间:2023-03-29 21:20:12 PHP

v1.3.0版本新增了一个Message类,主要方便用于在Server中回复端ACK。useSimps\MQTT\Protocol\Types;useSimps\MQTT\Protocol\V3;useSimps\MQTT\Message\ConnAck;使用Simps\MQTT\Message\PingResp;$server=newSwoole\Server('127.0.0.1',1883,SWOOLE_BASE);$server->set(['open_mqtt_protocol'=>true,'package_max_length'=>2*1024*1024,]);$server->on('connect',function($server,$fd){echo"Client#{$fd}:Connect.\n";});$server->on('接收',function(Swoole\Server$server,$fd,$from_id,$data){$data=V3::unpack($data);if(is_array($data)&&isset($data['type'])){switch($data['type']){caseTypes::CONNECT:if($data['protocol_name']!='MQTT'){$server->close($fd);returnfalse;}$server->send($fd,(newConnAck())->setCode(0)->setSessionPresent(0));休息;案例类型::PINGREQ:$server->send($fd,(newPingResp()));休息;}}else{$server->close($fd);}});$server->on('close',function($server,$fd){echo"Client#{$fd}:Close.\n";});$server->start();在收到CONNECT包后,需要回复CONNACK消息。之前的版本需要用户手动调用pack类生成send_data,现在只需要实例化对应的Message类并设置需要的值,如ConnAck:MQTT3useSimps\MQTT\Message\ConnAck;$ack=newConnAck();$ack->setCode(0)->setSessionPresent(0);$server->send($fd,$ack->getContents());$server->send($fd,$ack);MQTT5使用Simps\MQTT\Message\ConnAck;使用Simps\MQTT\Protocol\ProtocolInterface;$ack=newConnAck();$ack->setProtocolLevel(ProtocolInterface::MQTT_PROTOCOL_LEVEL_5_0)->setCode(0)->setSessionPresent(0)->setProperties([]);$server->send($fd,$ack->getContents());$server->send($fd,$ack);其他人可以检查特定的类或示例文件更新日期不兼容SUBACK的payload应该是返回码,修改keynamepayload为codes(9e72ce2)(283ff41)enhanceandoptimizeClientrecv(#38)(99a85bf)addCONNACK&PUBLISH&PINGRESPMessage(700a6c9)addSubAck消息和更新getMessageId(09f6334)添加DISCONNECT、PUBACK、PUBREC、PUBREL、UNSUBACK(20a78c7)修改AbstractConfig(dff6283)添加消息使用示例(58d5b4a)添加getContents以方便调用__toString(a7ba577)添加消息用户文档(bab2297)关于PHPMQTTMQTTprotocolParsing&CoroutineClientMQTTprotocolparsingandcoroutineclientforPHPSupportMQTTprotocolversion3.1,3.1.1and5.0,supportQoS0,QoS1,QoS2第一个支持MQTTv5.0协议的PHP库文档:https://mqtt.simps.ioGitHub:https://github.com/simps/mqttGitee:https://gitee.com/phpiot/mqtt支持记得点个Star~