2017-03-14 56 views
0

目前这在paho java库中不受支持,但我在我们的应用程序中需要此功能。例如,在应用程序启动时,我们没有网络连接,但在30秒左右后,我们建立了连接,因此我希望我的客户端能够自动连接。第一次连接 - 重新连接

我的问题是 - 什么是最好的方法来实现这一目标?我到目前为止尝试的是在连接方法出现问题时尝试重新连接。而且由于我们使用RxJava,我已经计划执行负责客户端连接的相同方法。如果我粘贴代码会更容易。

private void connect(String brokerUrl) { 
try { 

    LOG.info("Connecting to the broker..."); 
    mqttClient.connect(connectionOptions, "Connecting", new IMqttActionListener() { 

     @Override 
     public void onSuccess(IMqttToken asyncActionToken) { 
      LOG.info("Successfully conected to the broker."); 
     } 

     @Override 
     public void onFailure(IMqttToken asyncActionToken, Throwable exception) { 
      LOG.error("Failed to connect to broker. Trying to reconnect in {} milliseconds...", connectionRetryTimeout, exception); 
      // try to reconnect in few seconds 
      Schedulers.io().scheduleDirect(() -> connect(brokerUrl), connectionRetryTimeout, TimeUnit.MILLISECONDS); 
     } 
    }); 

} catch (MqttException e) { 
    LOG.error("Connection error.", e); 
} 
} 

发生这样的事情是什么,当网络连接可用我设法自动连接,但第二个线程创建了继续重试连接到代理。有没有人已经实施这个,或者你有任何其他建议?

回答

0

最好的办法是尽快落实通知您回调(基于异步事件)为德网络可用再次

interface INetworkCallback{ 

    void onNetworkStateChange(boolean newState); 

} 

和地方实现接口在第一

+0

那么,网络连接不可用当出现问题时,连接只是一种可能的情况。当我们尝试连接时,可能发生经纪人倒闭。 – BojanSM