13397158231   jevian_ma@worldflying.cn

post请求转为mqtt的方法

2017-07-17 17:00:00

        上一篇我们简单讲了下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服务并发送出去即可。






优秀产品推荐:可编程网络IO控制器

上一篇:mysql用户与权限相关命令

下一篇:javascript监听mqtt服务器的数据方法

联系我们

  • 地址:武汉市东湖高新开发区光谷总部国际1栋2412室
  • QQ:932773931
  • 电话:027-59761089-806
  • 手机:13397158231
  • 邮箱:jevian_ma@worldflying.cn

关注公众号

扫码添加微信

沃航(武汉)科技有限公司版权所有

备案号:鄂ICP备16014230号-1

本网站由提供CDN加速/云存储服务