client-sdk-swift icon indicating copy to clipboard operation
client-sdk-swift copied to clipboard

Reconnecting State not activated while quick reconnects

Open buttjer opened this issue 1 year ago • 2 comments

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```

buttjer avatar Apr 22 '24 13:04 buttjer

This is intentional for v2. Will discuss with Dev team whether to expose .quick reconnects.

hiroshihorie avatar Apr 22 '24 14:04 hiroshihorie

这是 v2 的故意设计。 将与开发团队讨论是否公开 .quick 重新连接。

This resulted in an immediate failure every time a reconnection was initiated

liuyang2211 avatar Jul 11 '24 06:07 liuyang2211

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.

tamimattafi avatar Jan 06 '25 21:01 tamimattafi

I tried to reproduce this issue in the sample app. Steps:

  1. I changed ConnectOptions to these:
let connectOptions = ConnectOptions(
    autoSubscribe: autoSubscribe,
    reconnectAttempts: 10,
    reconnectAttemptDelay: 5,
    primaryTransportConnectTimeout: 40,
    publisherTransportConnectTimeout: 40
)
  1. Added logs to didUpdateConnectionState and roomDidReconnect
  2. Started a call
  3. While the call was successfully connected, I turned OFF the WiFi for about 10 seconds, then turned it ON

Issues:

  1. The app didn't reconnect, and disconnected after some time
  2. .reconnecting state was published very late according to didUpdateConnectionState:
// 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:

tamimattafi avatar Jan 06 '25 22:01 tamimattafi

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.

tamimattafi avatar Jan 27 '25 23:01 tamimattafi

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

ming-chu avatar Feb 08 '25 19:02 ming-chu

@hiroshihorie I added a comment on the duplicate issue, let's discuss the final API then.

pblazej avatar Mar 14 '25 13:03 pblazej