博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何使用phpMQTT连接阿里云微服务消息队列for IoT
阅读量:5919 次
发布时间:2019-06-19

本文共 1246 字,大约阅读时间需要 4 分钟。

概述

关于阿里云的微服务消息队列,目前官方网站在部分给出了多种语言的SDK参考示例,但是还没有关于php的SDK及接入示例参考。下面主要介绍在使用目前主流的第三方SDK phpMQTT的过程中遇到的问题及解决办法。


主要流程

参数准备

在使用MQTT的过程中,关于参数的配置是一个比较让人头疼的问题,很多用户都在配置参数的过程中遇到过问题,这里建议用户首先使用第三方的工具MQTT.fx完成参数的配置调通工作,后续在代码中直接使用即可,避免在参数配置的过程中犯错。具体可以参考博客:。

包的引用

用户可以直接参考GitHub,使用composer的方式加载包,也可以直接下载整个项目使用。

SendDemo

connect(true, NULL, $username, $password)) { $mqtt->publish("mqtt_topic/notice/", "Hello World PHP! at " . date("r"), 0); $mqtt->close(); echo "send success!";} else { echo "Time out!\n";}?>

问题分析及解决

现象

用户使用在上面介绍的工具测试可行的参数直接配置到代码中,会报:Uninitialized string offset 的错误,跟踪到源码,发现:

$string = $this->read(4)

并未读入任何信息,但是参数的配置又没有什么问题,部分用户发现使用同样的代码连接自己的MQTT服务器可以正常连接。

原因

目前phpMQTT仅支持mqttv3.1,但是目前阿里云的微服务消息队列使用的是v3.1.1协议,MQTT v3.1.1协议名称长度 4,而3.1的协议长度为6。

解决方案

源码:

$buffer .= chr(0x06); $i++;    $buffer .= chr(0x4d); $i++;    $buffer .= chr(0x51); $i++;    $buffer .= chr(0x49); $i++;    $buffer .= chr(0x73); $i++;    $buffer .= chr(0x64); $i++;    $buffer .= chr(0x70); $i++;    $buffer .= chr(0x03); $i++;

调整为:

$buffer .= chr(0x04); $i++;    $buffer .= chr(0x4d); $i++;    $buffer .= chr(0x51); $i++;    $buffer .= chr(0x54); $i++;    $buffer .= chr(0x54); $i++;    $buffer .= chr(0x04); $i++;

测试效果

1、发送端使用调整后的源码运行SendDemo;

2、接收监听:

_

参考链接

转载地址:http://wibvx.baihongyu.com/

你可能感兴趣的文章
【语法】NSNumber
查看>>
C#和WCF通信
查看>>
javascript 的类式继承(构造函数)
查看>>
一、javaSE (二十四)多线程、设计模式
查看>>
荷兰国旗问题
查看>>
通过脚本监控进程
查看>>
1)③爬取网易It方面部分新闻
查看>>
8)排序②排序算法之选择排序[1]直接选择排序
查看>>
记Sniper
查看>>
项目开发管理SDEM
查看>>
SQLAlchemy的常用数据类型
查看>>
神经网络(一)神经网络基础知识
查看>>
[leetcode.com]算法题目 - Restore IP Addresses
查看>>
hive local hadoop特性
查看>>
Guid的使用
查看>>
使用epoll实现聊天室功能,同时比较epoll和select的异同
查看>>
bash . source ./ 区别
查看>>
寒假作业2编程总结
查看>>
实用 SQL 命令
查看>>
poj1135
查看>>