Skip to content

Commit 70f56f6

Browse files
authored
fix(api): fix subscription failures (#3998)
* fix(api): fix subscription failures * remove not needed comments
1 parent 28aa3eb commit 70f56f6

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

AmplifyPlugins/Core/AWSPluginsCore/WebSocket/WebSocketClient.swift

Lines changed: 18 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), (.online, .none):
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,19 @@ extension WebSocketClient {
335340
}
336341

337342
switch closeCode {
338-
case .internalServerError:
343+
case .internalServerError,
344+
.abnormalClosure,
345+
.invalid,
346+
.policyViolation:
347+
log.debug("[WebSocketClient] Retrying on closeCode: \(closeCode)")
339348
let delayInMs = await retryWithJitter.next()
340349
Task { [weak self] in
341350
try await Task.sleep(nanoseconds: UInt64(delayInMs) * 1_000_000)
342351
await self?.createConnectionAndRead()
343352
}
344-
default: break
353+
default:
354+
log.debug("[WebSocketClient] Not retrying for closeCode: \(closeCode)")
355+
break
345356
}
346357

347358
}

0 commit comments

Comments
 (0)