//Reconnect Only appropriate if cleanSession is false and we were connected. Declare as synchronized to avoid multiple calls to this method to send connect multiple times
synchronized void reconnect() {
//....
}
//注释说的很明确三个条件,1.cleanSession需设置为false,2.isAutomaticReconnect需设置为true,并且是之前是已经连接过了。
class CMqttClient {
//正在连接服务器
private var connecting = false
private var mqttAndroidClient: MqttAndroidClient? = null
//连接到服务器
fun connectToServer(
context: Context,
host: String,
clientId: String,
accountName: String,
accountPsw: String,
connectTimeout: Int = 20,
keepAliveTime: Int = 60,
connectionCallback: IConnectionCallback? = null,
dataCallback: IDataCallback? = null
) {
if(null == mqttAndroidClient) {
mqttAndroidClient = MqttAndroidClient(context, host, clientId)
mqttAndroidClient?.setCallback(object: MqttCallback {
override fun connectionLost(cause: Throwable?) {
dataCallback?.connectionError(cause)
}
override fun messageArrived(topic: String?, message: MqttMessage?) {
message?.let {
val payLoad = String(it.payload)
Log.d(xxxxxxxxx)
dataCallback?.dataMessage(payLoad)
}
}
override fun deliveryComplete(token: IMqttDeliveryToken?) {
//do something
}
})
}
connecting = true
val options = MqttConnectOptions()
options.isClean