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的参数function connect($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服务并发送出去即可。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值