100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > post报文给mqtt服务器没有响应 post请求转为mqtt的方法

post报文给mqtt服务器没有响应 post请求转为mqtt的方法

时间:2021-01-12 14:35:29

相关推荐

post报文给mqtt服务器没有响应 post请求转为mqtt的方法

上一篇我们简单讲了下mqtt服务的优点以及如何通过html5技术连接以及接受mqtt推送的。

首先,请大家明确一点,mqtt服务所使用的服务器软件,通常是mosquitto与apollo activemq,他们都是很成熟的mqtt服务器,但是程序本身并没有类似钩子的功能,如果我们直接使用mqtt的推送服务发送信息给接收端。那么这些信息就属于直接推送过去,无法将其存入数据库中。也就无法知道哪些数据存储过,哪些数据没有存储过了。

因此小沃建议发送消息使用http协议中的post请求。然后让后台接受端处理一下,再转发给mqtt服务器。

这里我们重点讲一下php语言如何发送消息给mqtt服务器的。首先,php使用mqtt需要下载一个github上的开源库链接。

大家可以看到这个开源库很简单,就一个phpMQTT.php文件。调用方式也有示例文件展示。connect()){

$mqtt->publish("topic","大家好,我是一条通过php发送的mqtt消息");//这里第一条是mqtt的topic值,第二条是发送的信息。

$mqtt->close();

}

?>

如果上面的代码写的没有问题,那么就应该可以发送成功了。

但是,如果大家看到这里就不往下看了,那么大家就忽略了一个非常重要的一点,mqtt连接所需要关注的4点这里只提到了2点,请大家注意,mqtt服务是有用户名密码安全机制的。

这里并没有告诉我用户名密码在哪里输入。那么如果遇到mqtt服务器添加了用户名密码,又该怎么办呢?

这里小沃通过读库的源代码,偶然发现了在connect方法中有疑似username与password的参数functionconnect($clean=true,$will=NULL,$username=NULL,$password=NULL){

...

因此我大胆尝试将demo中的第三句话。if($mqtt->connect()){

替换成if($mqtt->connect(true,NULL,$username,$password)){

然后去连接了一下我方的一个mqtt服务器,结果居然成功连接通了。

至此,php发送mqtt消息成功实现了,只要通过post提交方式让php接收消息,然后存一份消息到数据库,另一份消息转成mqtt服务并发送出去即可。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。