PHPMQTT问题一二三

问题一:PHPMQTT作为客户端订阅超过一定数量的主题后,系统就会报错。

思路:在网上查找原因,失败;

           打开调试debug = true ; 结果proc方法中报错: eof receive

问题二:为什么读不到socket呢?

MQTT为TCP传输协议:遵循TCP三次握手协议,所以对MQTT有重新理了一次;

在MQTT群里咨询,请教大佬;

一个技术大姐:(其实没我大多少):让我看看MQTT日志报错;

于是查看MQTT错误日志同时报错:

2018-07-27 18:43:18.412 [error] <0.3216.9>@emqttd_client:received:340 Client(39.104.65.187:37660): Parser failed for {function_clause,[{emqttd_parser,parse_utf,[<<6>>],[{file,"src/emqttd_parser.erl"},{line,206}]},{emqttd_parser,parse_topics,3,[{file,"src/emqttd_parser.erl"},{line,195}]},{emqttd_parser,parse_frame,3,[{file,"src/emqttd_parser.erl"},{line,147}]},{emqttd_client,received,2,[{file,"src/emqttd_client.erl"},{line,319}]},{gen_server2,handle_msg,2,[{file,"src/gen_server2.erl"},{line,1046}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,247}]}]}
2018-07-27 18:43:18.413 [error] <0.3216.9>@emqttd_client:received:341 Client(
39.104.65.187:37660): Error data: <<0,1,0,6,36,83,89,83,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,112,117,98,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,114,101,112,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,97,115,107,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,99,114,100,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,116,121,112,47,35,0,0,17,47,122,113,49,48,48,108,47,100,101,118,47,111,117,116,47,35,0>>

发现消息不对称;

于是再去网上查,也没有查出原因;

问题三:为什么会Function消息不对称呢?

网上查了很多,包括国外的网站:git上说是time问题也有的说是mqtt QOS 设置为1。都试过,不行

群里一个大哥回复我了

说是我可能是消息FUNCTION写错了

我试过的却是对的。

然后我给他说,我用其他客户端没问题。他对我说,可能是那个库的问题。让我分批次订阅;

问题四:怎么去分批次订阅

于是我根据不同的方法写了两个订阅主题的方法。测试一下通过了。

 

经过这次错误,明白自己对消息堆栈的理解还不够,以后要多学习他的源码。多深入理解。不然遇到问题要不是别人的点拨上,还会出错。

 

感谢大家的帮助。

 

 

 

 

posted @ 2018-08-04 15:59  易先讯  阅读(3493)  评论(2编辑  收藏  举报