@Override
public void connectionLost(Throwable cause) {
// TODO Auto-generated method stub
reconnectStatus = 0;
executor.scheduleAtFixedRate(reconnectRunnable, 0, 5, TimeUnit.SECONDS); // reconnect every 5s
System.out.println(cause);
}
// reconnect to the broker
Runnable reconnectRunnable = new Runnable() {
public void run() {
if(reconnectStatus == 1) {
System.out.println("Stop runnable!");
executor.shutdown();
return;
} else {
init();
}
}
};
当broker重新启动时,它在第一次工作时很好。但是,这个ConnectionLosped()
触发器在第二次重新启动代理时不起作用。我该怎么修好它?
非常感谢。
如果使用此mqtt客户机,不需要额外的代码来自动重新连接
在创建MQTTClient
时,可以在MQTTConnections
中指定重新连接和清洁会话选项。
示例代码:
public void initClinet(){
MqttClient client=new MqttClient("server address", MqttClient.generateClientId());
client.setCallback(new MyListener());
MqttConnectOptions options = new MqttConnectOptions();
options.setAutomaticReconnect(true);
options.setCleanSession(true);
options.setUserName("username");
options.setPassword("password".toCharArray());
options.setKeepAliveInterval(10);
options.setCleanSession(false);
client.connect(options);
client.subscribe("channelname");
}
我是PHP领域的新手,在连接到MQTT时遇到了一些问题。 错误为:stream_socket_client():无法连接到TCP://...*:8083(连接超时) 在下面的代码中面临问题:
我在artemis代理中添加了一个mqtt拦截器,以便拦截mqtt客户端连接: 我的客户端apache paho通过这个端口“WS://0.0.0.0:61614”连接到代理。 我的问题是只截获发布到主题的消息。 为什么不截获连接消息?
问题内容: 在生产中,我有一个使用连接局部变量保存游戏状态的游戏。但是,我注意到,如果我在连接上闲置了一段时间,它将断开连接并重新连接,这将丢失当前状态。在本地主机上进行测试时,我从未注意到此行为。这是套接字连接的规范行为,还是导致连接断开的其他原因。 如果是正常行为,通常如何处理?是否应该将连接值全局存储,以便用户断开/重新连接时可以恢复连接值? 问题答案: 您的问题与套接字超时有关。如果某个套
我如何用C#将消息发布到外部托管的MQTT代理(在我的例子中是VirtualBox--在openwrt之上)?
重新建立mqtt连接,前提是必须已经通过Iot_id,Iot_pwd建立过一次mqtt连接。 请求方式: "|4|1|5|\r" 返回值: "|4|1|1|1|\r" mqtt连接状态:连接成功 "|4|1|1|2|reason|\r" mqtt连接状态:连接失败,字符串reason表示失败的原因 Arduino样例: softSerial.print("|4|1|5|\r");