@@ -248,8 +248,13 @@ extension WebSocketClient: URLSessionWebSocketDelegate {
248248
249249 let nsError = error as NSError
250250 switch ( nsError. domain, nsError. code) {
251- case ( NSURLErrorDomain . self, NSURLErrorNetworkConnectionLost) , // connection lost
252- ( NSPOSIXErrorDomain . self, Int ( ECONNABORTED) ) : // background to foreground
251+ case ( NSURLErrorDomain . self, NSURLErrorNetworkConnectionLost) ,
252+ ( NSURLErrorDomain . self, NSURLErrorCannotConnectToHost) ,
253+ ( NSURLErrorDomain . self, NSURLErrorTimedOut) ,
254+ ( NSURLErrorDomain . self, NSURLErrorNotConnectedToInternet) ,
255+ ( NSURLErrorDomain . self, NSURLErrorDataNotAllowed) ,
256+ ( NSPOSIXErrorDomain . self, Int ( ECONNABORTED) ) ,
257+ ( NSPOSIXErrorDomain . self, 57 ) :
253258 self . subject. send ( . error( WebSocketClient . Error. connectionLost) )
254259 Task { [ weak self] in
255260 await self ? . networkMonitor. updateState ( . offline)
@@ -283,11 +288,11 @@ extension WebSocketClient {
283288 }
284289
285290 switch stateChange {
286- case ( . online, . offline) :
287- log. debug ( " [WebSocketClient] NetworkMonitor - Device went offline " )
291+ case ( . online, . offline) , ( . none , . offline ) :
292+ log. debug ( " [WebSocketClient] NetworkMonitor - Device went offline or network status became unknown " )
288293 self . connection? . cancel ( with: . invalid, reason: nil )
289294 self . subject. send ( . disconnected( . invalid, nil ) )
290- case ( . offline, . online) :
295+ case ( . offline, . online) , ( . none , . online ) :
291296 log. debug ( " [WebSocketClient] NetworkMonitor - Device back online " )
292297 await self . createConnectionAndRead ( )
293298 default :
@@ -335,13 +340,18 @@ extension WebSocketClient {
335340 }
336341
337342 switch closeCode {
338- case . internalServerError:
343+ case . internalServerError,
344+ . abnormalClosure,
345+ . policyViolation:
346+ log. debug ( " [WebSocketClient] Retrying on closeCode: \( closeCode) " )
339347 let delayInMs = await retryWithJitter. next ( )
340348 Task { [ weak self] in
341349 try await Task . sleep ( nanoseconds: UInt64 ( delayInMs) * 1_000_000 )
342350 await self ? . createConnectionAndRead ( )
343351 }
344- default : break
352+ default :
353+ log. debug ( " [WebSocketClient] Not retrying for closeCode: \( closeCode) " )
354+ break
345355 }
346356
347357 }
0 commit comments