client-sdk-swift
client-sdk-swift copied to clipboard
Reconnecting State not activated while quick reconnects
Describe the bug The room event roomIsReconnecting seems to be called late. The system is already trying to reconnect while the there is no network at all. Also the state remains .connected.
But the event is called if the network is reestablished. Followed immedetiary by roomDidReconnect . Is this on purpose? I think it should reflect the actual state. The room connect state seems also remain in .connected. I would expect reconnecting or at least disconnected .
Otherwise, how to show the user that the systems is actively trying to reconnect? No internet could also mean that the system gave up trying to reconnect at all. I can’t see a way to distinguish that. I also think in the version 1 of the SDK this also behaved differently.
SDK Version 2.0.5
iOS/macOS Version iOS 17.4.1
Steps to Reproduce Disable network while in a call.
Expected behavior
Connection State changes to reconnecting.
roomIsReconnecting called.
Logs
2024-04-22T15:05:40+0200 error LiveKitSDK : [LiveKit] Engine.transport(_:didUpdateState:) Failed calling startReconnect, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state" UserInfo={NSLocalizedDescription=Invalid state}
2024-04-22T15:05:49+0200 warning LiveKitSDK : [LiveKit] Engine.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect already in progress...
2024-04-22T15:05:49+0200 error LiveKitSDK : [LiveKit] Engine.transport(_:didUpdateState:) Failed calling startReconnect, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state" UserInfo={NSLocalizedDescription=Invalid state}
Task <B4FFE66E-82E2-4D5B-9767-7C60D4CD1DA1>.<1> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=wss://...&protocol=12&sdk=swift&version=2.0.5&os=iOS&os_version=17.4.1&device_model=iPhone16,1&network=wifi&reconnect=1&auto_subscribe=0&adaptive_stream=0, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <B4FFE66E-82E2-4D5B-9767-7C60D4CD1DA1>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <B4FFE66E-82E2-4D5B-9767-7C60D4CD1DA1>.<1>, NSLocalizedDescription=The request timed out.}
2024-04-22T15:05:49+0200 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={NSErrorFailingURLStringKey=wss://...&protocol=12&sdk=swift&version=2.0.5&os=iOS&os_version=17.4.1&device_model=iPhone16,1&network=wifi&reconnect=1&auto_subscribe=0&adaptive_stream=0, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <B4FFE66E-82E2-4D5B-9767-7C60D4CD1DA1>.<1>"
), _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <B4FFE66E-82E2-4D5B-9767-7C60D4CD1DA1>.<1>, NSLocalizedDescription=The request timed out.})
2024-04-22T15:05:49+0200 error LiveKitSDK : [LiveKit] Engine.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2024-04-22T15:05:49+0200 warning LiveKitSDK : [LiveKit] Engine.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect already in progress...
[Retry] Waiting for 1.0 seconds...
2024-04-22T15:05:49+0200 error LiveKitSDK : [LiveKit] Engine.signalClient(_:didUpdateConnectionState:oldState:disconnectError:) Failed calling startReconnect, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state" UserInfo={NSLocalizedDescription=Invalid state}
2024-04-22T15:05:50+0200 warning LiveKitSDK : [LiveKit] Engine.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect already in progress...
2024-04-22T15:05:50+0200 error LiveKitSDK : [LiveKit] Engine.transport(_:didUpdateState:) Failed calling startReconnect, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state" UserInfo={NSLocalizedDescription=Invalid state}
[Retry] Attempt 2 of 300, delay: 1.0```
This is intentional for v2. Will discuss with Dev team whether to expose .quick reconnects.
这是 v2 的故意设计。 将与开发团队讨论是否公开 .quick 重新连接。
This resulted in an immediate failure every time a reconnection was initiated
Any updates on this issue? Having the same problem. Even when Wi-Fi is reactivated, reconnect doesn't happen, and after timeout, disconnected is called. Android SDK seems to immediately publish reconnecting event when Wi-Fi is deactivated.
I tried to reproduce this issue in the sample app. Steps:
- I changed
ConnectOptionsto these:
let connectOptions = ConnectOptions(
autoSubscribe: autoSubscribe,
reconnectAttempts: 10,
reconnectAttemptDelay: 5,
primaryTransportConnectTimeout: 40,
publisherTransportConnectTimeout: 40
)
- Added logs to
didUpdateConnectionStateandroomDidReconnect - Started a call
- While the call was successfully connected, I turned OFF the WiFi for about 10 seconds, then turned it ON
Issues:
- The app didn't reconnect, and disconnected after some time
.reconnectingstate was published very late according todidUpdateConnectionState:
// After so many reconnect attempts
[LiveKit] Did update connectionState .connected -> .reconnecting
// After timeout
[LiveKit] Did update connectionState .reconnecting -> .disconnected
here are some logs:
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) status: satisfied, interfaces: ["wifi-12"], gateways: [XXX.XXX.XX.XX:0], activeIp: Optional("XXX.XXX.XX.XX")
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) status: unsatisfied, interfaces: [], gateways: [], activeIp: nil
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) starting satisfied monitor timer
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:24+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .connected -> .disconnected
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Starting, reason: websocket
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.init(delegate:connectOptions:roomOptions:) connectionState: .connected -> .connected, reconnectMode: Optional(.quick)
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 1/10 tries left.
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:24+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:24+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:24+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 2/10 tries left.
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:30+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:30+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] Transport.peerConnection(_:didChange:) [Connect] Transport(subscriber) did update state: .disconnected
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didUpdateState:) target: subscriber, connectionState: .disconnected
2025-01-07T01:09:30+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Starting, reason: transport
2025-01-07T01:09:30+0300 warning LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect already in progress...
2025-01-07T01:09:30+0300 error LiveKitSDK : [LiveKit] Room.transport(_:didUpdateState:) Failed calling startReconnect, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state" UserInfo={NSLocalizedDescription=Invalid state}
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 3/10 tries left.
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:35+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:35+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:35+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 4/10 tries left.
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:40+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:40+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:40+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 5/10 tries left.
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:45+0300 error LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: Optional(Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSURLErrorDomain Code=-1009 "The Internet connection appears to be offline." UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, _NSURLErrorRelatedURLSessionTaskErrorKey=(
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:45+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:45+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown}
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] SignalClient._sendRequest(_:) connectionState is .disconnected
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) Failed to send iceCandidate, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state(connectionState is .disconnected)" UserInfo={NSLocalizedDescription=Invalid state(connectionState is .disconnected)}
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) status: unsatisfied, interfaces: ["wifi-12"], gateways: [], activeIp: Optional("XXX.XXX.XX.XX")
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] SignalClient._sendRequest(_:) connectionState is .disconnected
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) Failed to send iceCandidate, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state(connectionState is .disconnected)" UserInfo={NSLocalizedDescription=Invalid state(connectionState is .disconnected)}
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] SignalClient._sendRequest(_:) connectionState is .disconnected
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) Failed to send iceCandidate, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state(connectionState is .disconnected)" UserInfo={NSLocalizedDescription=Invalid state(connectionState is .disconnected)}
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) status: satisfied, interfaces: ["wifi-12"], gateways: [XXX.XXX.XX.XX:0], activeIp: Optional("XXX.XXX.XX.XX")
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) didSwitch type: quick on & off
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) sending iceCandidate
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] SignalClient._sendRequest(_:) connectionState is .disconnected
2025-01-07T01:09:48+0300 error LiveKitSDK : [LiveKit] Room.transport(_:didGenerateIceCandidate:) Failed to send iceCandidate, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state(connectionState is .disconnected)" UserInfo={NSLocalizedDescription=Invalid state(connectionState is .disconnected)}
2025-01-07T01:09:48+0300 debug LiveKitSDK : [LiveKit] ConnectivityListener.set(path:notify:) status: satisfied, interfaces: ["wifi-12"], gateways: [XXX.XXX.XX.XX:0], activeIp: Optional("XXX.XXX.XX.XX")
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 6/10 tries left.
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) Did enter WebSocket message loop...
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1}
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: nil
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.wait(timeout:) Join response id: BCFC4C1D-5D85-4905-8A3E-90BE8C96DCE7 waiting for milliseconds(7000)
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:50+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled})
2025-01-07T01:09:50+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled}
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 7/10 tries left.
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) Did enter WebSocket message loop...
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.wait(timeout:) Join response id: 1D333FAB-B888-4C14-9172-215FCE69FBDB waiting for milliseconds(7000)
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1}
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: nil
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:09:55+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled})
2025-01-07T01:09:55+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled}
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 8/10 tries left.
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) Did enter WebSocket message loop...
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.wait(timeout:) Join response id: 3151FE3A-A377-46AF-9885-FAFCE8D5DEE7 waiting for milliseconds(7000)
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1}
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: nil
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:10:00+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled})
2025-01-07T01:10:00+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled}
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 9/10 tries left.
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] Room.quickReconnectSequence() [Connect] Starting .quick reconnect sequence...
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .quick
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:10:05+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) Did enter WebSocket message loop...
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.wait(timeout:) Join response id: 7D97CB17-5BC2-4574-B2BF-9FE93E06929F waiting for milliseconds(7000)
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] LiveKitError.from(error:) Uncategorized error for: Error Domain=NSPOSIXErrorDomain Code=57 "Socket is not connected" UserInfo={NSErrorFailingURLStringKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1, NSErrorFailingURLKey=wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&reconnect=1&sid=PA_yAkYt3SPsnfc&auto_subscribe=1&adaptive_stream=1}
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: nil
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=0 "Unknown" UserInfo={NSLocalizedDescription=Unknown})
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled})
2025-01-07T01:10:06+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .disconnected
2025-01-07T01:10:06+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .quick failed with error: Error Domain=io.livekit.swift-sdk Code=100 "Cancelled" UserInfo={NSLocalizedDescription=Cancelled}
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Retry in 5.0 seconds, 10/10 tries left.
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.init(delegate:connectOptions:roomOptions:) connectionState: .connected -> .connected, reconnectMode: Optional(.full)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.fullReconnectSequence() [Connect] starting .full reconnect sequence...
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.init(delegate:connectOptions:roomOptions:) connectionState: .connected -> .reconnecting, reconnectMode: Optional(.full)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.cleanUp(withError:isFullReconnect:) withError: nil, isFullReconnect: true
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
[LiveKit] Did update connectionState .connected -> .reconnecting
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.cleanUpParticipants(isFullReconnect:notify:) notify: true
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: nil
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] mode: .full
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) [Connect] with url: wss://livekit-example.com/rtc?access_token=XXXX&protocol=12&sdk=swift&version=2.0.16&os=iOS&os_version=18.1.1&device_model=iPhone12,3&network=wifi&auto_subscribe=1&adaptive_stream=1
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .disconnected -> .reconnecting
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.connect(_:_:connectOptions:reconnectMode:participantSid:adaptiveStream:) Did enter WebSocket message loop...
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.wait(timeout:) Join response id: 1658B8EA-C0C5-481D-84C9-429B7CBB6750 waiting for milliseconds(7000)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<ConnectResponse>.resume(returning:) Join response
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient._restartPingTimer() ping/pong starting with interval: 5, timeout: 15
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .reconnecting -> .connected
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.configureTransports(connectResponse:) Configuring transports with JOIN response...
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.configureTransports(connectResponse:) subscriberPrimary: true
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Transport.init(config:target:primary:delegate:)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Transport.init(config:target:primary:delegate:)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Transport.peerConnectionShouldNegotiate(_:) ShouldNegotiate for publisher
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.configureTransports(connectResponse:) dataChannel.Optional("_reliable") : Optional(-1)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] Room.configureTransports(connectResponse:) dataChannel.Optional("_lossy") : Optional(-1)
2025-01-07T01:10:11+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<()>.wait(timeout:) Primary transport connect id: E0CF7C95-AF1A-46BF-9A3D-B82CE257777E waiting for milliseconds(40000)
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<()>.wait(timeout:) Primary transport connect id: E0CF7C95-AF1A-46BF-9A3D-B82CE257777E timed out
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Reconnect mode: .full failed with error: Error Domain=io.livekit.swift-sdk Code=101 "Timed out" UserInfo={NSLocalizedDescription=Timed out}
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.startReconnect(reason:nextReconnectMode:) [Connect] Sequence failed with error: Error Domain=io.livekit.swift-sdk Code=101 "Timed out" UserInfo={NSLocalizedDescription=Timed out}
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.cleanUp(withError:isFullReconnect:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=101 "Timed out" UserInfo={NSLocalizedDescription=Timed out}), isFullReconnect: false
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] SignalClient.cleanUp(withError:) withError: Optional(Error Domain=io.livekit.swift-sdk Code=101 "Timed out" UserInfo={NSLocalizedDescription=Timed out})
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] SignalClient.connectionState .connected -> .disconnected
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] WebSocket.urlSession(_:task:didCompleteWithError:) didCompleteWithError: nil
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.cleanUpParticipants(isFullReconnect:notify:) notify: true
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.init(delegate:connectOptions:roomOptions:) connectionState: .reconnecting -> .disconnected, reconnectMode: nil
[LiveKit] Did update connectionState .reconnecting -> .disconnected
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveLeave:reason:) canReconnect: true, reason: stateMismatch
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveLeave:reason:) canReconnect: true, reason: stateMismatch
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveLeave:reason:) canReconnect: true, reason: stateMismatch
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveLeave:reason:) canReconnect: true, reason: stateMismatch
2025-01-07T01:10:51+0300 info LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveConnectResponse:) ServerInfo(edition: standard, version: 1.8.0, protocol: 15, region: , nodeID: ND_6iv9gDCXrs6R, debugInfo: )
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] AsyncCompleter<Sid>.resume(returning:) sid
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveOffer:) Received offer, creating & sending answer...
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveOffer:) Failed to send answer, subscriber is nil
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 error LiveKitSDK : [LiveKit] Room.signalClient(_:didReceiveIceCandidate:target:) Failed to add ice candidate, transport is nil for target: subscriber
2025-01-07T01:10:51+0300 debug LiveKitSDK : [LiveKit] Room.signalClient(_:didUpdateParticipants:) participants: [LiveKit.Livekit_ParticipantInfo:
Hello @hiroshihorie! Could you please take a look at my comment? We are having this issue with some users with unstable connection, sometimes the SDK doesn't reconnect successfully even if their internet connection is available. Also, the reconnect state isn't updated either, nor the connection quality.
I encounter the same issue. After turn off the network (no wifi or cellular) for about 10 seconds, turn it on again didn't resume the connection.
some logs for reference:
2025-02-08T13:48:15-0500 error LiveKitSDK : SignalClient._sendRequest(_:) connectionState is .disconnected
2025-02-08T13:48:15-0500 error LiveKitSDK : Room.transport(_:didGenerateIceCandidate:) Failed to send iceCandidate, error: Error Domain=io.livekit.swift-sdk Code=104 "Invalid state(connectionState is .disconnected)" UserInfo={NSLocalizedDescription=Invalid state(connectionState is .disconnected)}
2025-02-08T13:48:20-0500 debug LiveKitSDK : SignalClient.connectionState .disconnected -> .reconnecting
2025-02-08T13:48:20-0500 debug LiveKitSDK : SignalClient.connectionState .reconnecting -> .disconnected
2025-02-08T13:48:25-0500 debug LiveKitSDK : SignalClient.connectionState .disconnected -> .reconnecting
2025-02-08T13:48:25-0500 debug LiveKitSDK : SignalClient.connectionState .reconnecting -> .disconnected
2025-02-08T13:48:30-0500 debug LiveKitSDK : SignalClient.connectionState .disconnected -> .reconnecting
2025-02-08T13:48:30-0500 debug LiveKitSDK : SignalClient.connectionState .reconnecting -> .disconnected
@hiroshihorie I added a comment on the duplicate issue, let's discuss the final API then.