|
@@ -28,6 +28,8 @@ object AwsIotManager {
|
|
|
private val client: MyAWSIotMqttClient by lazy { init() }
|
|
|
var isDisconnected = false
|
|
|
var lastDisconnectTime = 0L
|
|
|
+ var lastConnectTime = 0L
|
|
|
+ var connecting = false
|
|
|
|
|
|
fun onCloseCallback() {
|
|
|
isDisconnected = true
|
|
@@ -79,6 +81,7 @@ object AwsIotManager {
|
|
|
fun connect() {
|
|
|
CoroutineScope(Dispatchers.IO + CoroutineName("MQTT_connect")).launch {
|
|
|
try {
|
|
|
+ connecting = true
|
|
|
var needNewSession = false
|
|
|
if (System.currentTimeMillis() - lastDisconnectTime > 24 * 60 * 60 * 1000) {
|
|
|
needNewSession = true
|
|
@@ -88,18 +91,20 @@ object AwsIotManager {
|
|
|
while (!isDisconnected) {
|
|
|
delay(100)
|
|
|
}
|
|
|
- isDisconnected = false
|
|
|
client.apply {
|
|
|
keepAliveInterval =
|
|
|
(if (isTest) 3 else 5) * 60 * 1000 - 15 * 1000 // iotInfo.keepAlive - 15 * 1000
|
|
|
- maxConnectionRetries = 10
|
|
|
+ maxConnectionRetries = Int.MAX_VALUE
|
|
|
baseRetryDelay = 5 * 1000
|
|
|
- maxRetryDelay = 2 * 60 * 1000
|
|
|
+ maxRetryDelay = 5 * 60 * 1000
|
|
|
connectionTimeout = 30 * 1000
|
|
|
isCleanSession = false
|
|
|
}.apply {
|
|
|
connect(10 * 1000, true).also {
|
|
|
+ connecting = false
|
|
|
+ isDisconnected = false
|
|
|
lastDisconnectTime = System.currentTimeMillis()
|
|
|
+ lastConnectTime = System.currentTimeMillis()
|
|
|
if (needNewSession) {
|
|
|
callNewSession()
|
|
|
}
|