RAK439工程中同时使用MQTT和TCP client



  • 亲爱的AE,你好!

    我使用贵公司的RAK439模块,没有使用操作系统,使用的库为rak_wifi_nos_ARM_CM0_v1.0.7.1.lib

    我公司的一代产品使用http上传数据,我使用tcp client模拟http发送,可以正常实现功能,也挺稳定的(http不能总是长连接,服务器会自动断开连接,对于发送失败的数据会重新发送)。
    现在客户提出了新的需求,需要在一代产品上增加MQTT功能,于是我在原来的基础上增加了MQTT功能,即我在循环体中同时处理了任务:http和mqtt,我使用了两个独立的socket,根据底层返回的socket号,我打印看到应该一个是socket0和socket1。
    循环体中任务如下:

    RAK_Mqtt_EventHandle();
    RAK_TcpClient_EventHandle();
    但是程序添加完毕后,发现mqtt的ip和端口会经常断开,且何难回连,总是会返回-14的错误,#define RW_ERR_CMD_PENDING (-14)

    我做了对比测试,发现只运行mqtt时,mqtt很稳定,不会出现断开,所以关于这类应用,贵司是否有好的方法和建议,这个问题困扰我们很久了,无奈在深圳贵司好像没有技术支持,还请贵司AE多给建议,之后的DEBUG我还发现一些情况下,http和mqtt的socket号会对调,即本来http对应的是socket0,mqtt对应的是socket1,但是断开重连后,http可能会变为socket1,而mqtt则对应socket0,不知道http的断开重连会不会影响mqtt的socket(http和mqtt使用同一个服务器,不同的端口),以上是我目前DEBUG到的所有信息,如果贵司有相关经验,请给一些合理建议和方法,谢谢!



  • 目前发现在不使用http值使用mqtt是也会出现-14的问题,刚开始没有发现,这个好像是随机出现的?
    #define RW_ERR_CMD_PENDING (-14)
    这是错误一般是什么情况导致的?
    为啥刚开始可以使用,然后过一段时间和云端异常断开后,再也无法建立连接?



  • #define RW_ERR_CMD_PENDING (-14)我看到这个错误的意思是内部命令正在执行,为啥一直是这个错误?无论怎样都无法恢复,智能重启系统才可以正常



  • 会不会和服务器有关系,我用本地tcp_udp工具模拟mqtt发现没有这个问题,一直都很正常。



  • @weiwanli 你好,目前初步看,可能是你在管理socket號時存在問題。請動態管理socket號,另外面對多歌socket,建議使用OS的。


登录后回复
 

与 RAK支持中心 的连接断开,我们正在尝试重连,请耐心等待