linux - 在 AWS EC2 ubuntu 实例上使用自己的 mosquitto 代理时重新连接到 mqtt 代理失败
问题描述
我之前在我的 esp8266 上使用了蚊子的测试 mqtt 代理(即 test.mosquitto.org),并带有重新连接代码,即如果连接由于路由器重置而中断,那么当互联网恢复时它将重新连接到代理。它工作正常。我在 Cloud Mqtt 代理中使用了相同的代码,它也运行良好。但是现在,当我在 AWS EC2 上托管我自己的 mosquitto 代理(如本教程MQTT 代理)时,它在路由器重置后停止重新连接。以下是我在 ESP8266 上的代码:-
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
const char* topic = "someTopic";
String clientId = "randomClientId";
const char* mqttServer = "xxxxxxxxxxxxxxx.compute.amazonaws.com";
const int mqttPort = 1883;
PubSubClient client(espClient);
void setup() {
Serial.begin(115200);
client.setServer(mqttServer, mqttPort);
client.setCallback(callback);
lastReconnectAttempt = 0;
delay(500);
}
boolean reconnect() {
clientId += String(random(0xffff), HEX);
if (client.connect(clientId.c_str())) {
client.subscribe(topic);
}
return client.connected();
}
void loop() {
if (!client.connected())
{
long now = millis();
if (now - lastReconnectAttempt > 5000)
{
lastReconnectAttempt = now;
if (reconnect())
{
lastReconnectAttempt = 0;
}
}
} else
{
client.loop();
}
}
如果有人知道原因,请告诉我。
解决方案
推荐阅读
- reactjs - 动态显示 React js 上元素的参数
- labview - 更新labview波形图问题
- javascript - 在动态添加的复选框上监视更改事件
- python - 从列表中提取并加在一起的循环
- reactjs - 找不到模块:无法解析“react-native”
- python - wxPython - 如何为网格的列设置编辑器
- javascript - Javascript计算器不减去后退键按钮
- android - .getPath() 与 cursor 在 Android 中从 uri 获取文件的真实路径之间的区别
- msbuild - 在 MSBuild 发布运行时停止发布 SSDT
- reactjs - 在 typescript 中启用 react-hooks eslint 插件。tslint 中没有插件