问题描述
我每PubSubClient使用this example连接到AWS IoT。具体来说,我正在尝试使用AWS IoT Fleet Provisioning,它涉及订阅和发布一些特殊的$aws/
主题。
连接正确建立,并且CloudWatch日志显示成功的Connect
,Subscribe
,Publish-In
和Publish-Out
事件。但是,每当MCU收到一条消息时,它似乎就会断开连接。有什么作用?
解决方法
调试PubSubClient显示底层WiFiClientSecure
实例由于以下错误而失去连接:
BR_ERR_TOO_LARGE: Incoming record is too large to be processed,or buffer is too small for the handshake message to send.
我收到的消息约为4 KB,因此我必须添加以下内容:
wifi_ = new WiFiClientSecure();
wifi_->setBufferSizes(4096,512);
从那里开始,PubSubClient有了自己的缓冲区,我也不得不提高它:
mqtt_ = new PubSubClient(*wifi_);
mqtt_->setBufferSize(4096);
进行这些更改使我能够成功地从AWS IoT接收这些消息。