Skip to content

Commit 5869cdc

Browse files
committed
fix
1 parent 964d643 commit 5869cdc

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

AmplifyPlugins/Core/AWSPluginsCore/WebSocket/WebSocketClient.swift

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)