正在显示
1 个修改的文件
包含
12 行增加
和
4 行删除
| @@ -76,6 +76,8 @@ internal constructor( | @@ -76,6 +76,8 @@ internal constructor( | ||
| 76 | } | 76 | } |
| 77 | 77 | ||
| 78 | private var reconnectingJob: Job? = null | 78 | private var reconnectingJob: Job? = null |
| 79 | + private var fullReconnectOnNext = false | ||
| 80 | + | ||
| 79 | private val pendingTrackResolvers: MutableMap<String, Continuation<LivekitModels.TrackInfo>> = | 81 | private val pendingTrackResolvers: MutableMap<String, Continuation<LivekitModels.TrackInfo>> = |
| 80 | mutableMapOf() | 82 | mutableMapOf() |
| 81 | private var sessionUrl: String? = null | 83 | private var sessionUrl: String? = null |
| @@ -340,7 +342,8 @@ internal constructor( | @@ -340,7 +342,8 @@ internal constructor( | ||
| 340 | LKLog.w { "couldn't reconnect, no url or no token" } | 342 | LKLog.w { "couldn't reconnect, no url or no token" } |
| 341 | return | 343 | return |
| 342 | } | 344 | } |
| 343 | - | 345 | + val forceFullReconnect = fullReconnectOnNext |
| 346 | + fullReconnectOnNext = false | ||
| 344 | val job = coroutineScope.launch { | 347 | val job = coroutineScope.launch { |
| 345 | connectionState = ConnectionState.RECONNECTING | 348 | connectionState = ConnectionState.RECONNECTING |
| 346 | listener?.onEngineReconnecting() | 349 | listener?.onEngineReconnecting() |
| @@ -356,7 +359,7 @@ internal constructor( | @@ -356,7 +359,7 @@ internal constructor( | ||
| 356 | delay(startDelay) | 359 | delay(startDelay) |
| 357 | 360 | ||
| 358 | // full reconnect after first try. | 361 | // full reconnect after first try. |
| 359 | - val isFullReconnect = retries != 0 | 362 | + val isFullReconnect = retries != 0 || forceFullReconnect |
| 360 | 363 | ||
| 361 | if (isFullReconnect) { | 364 | if (isFullReconnect) { |
| 362 | try { | 365 | try { |
| @@ -676,8 +679,13 @@ internal constructor( | @@ -676,8 +679,13 @@ internal constructor( | ||
| 676 | } | 679 | } |
| 677 | 680 | ||
| 678 | override fun onLeave(leave: LivekitRtc.LeaveRequest) { | 681 | override fun onLeave(leave: LivekitRtc.LeaveRequest) { |
| 679 | - close() | ||
| 680 | - listener?.onEngineDisconnected("server leave") | 682 | + if (leave.canReconnect) { |
| 683 | + // reconnect will be triggered on close. | ||
| 684 | + fullReconnectOnNext = true | ||
| 685 | + } else { | ||
| 686 | + close() | ||
| 687 | + listener?.onEngineDisconnected("server leave") | ||
| 688 | + } | ||
| 681 | } | 689 | } |
| 682 | 690 | ||
| 683 | // Signal error | 691 | // Signal error |
-
请 注册 或 登录 后发表评论