dont use multiple threads to respond to messages
This commit is contained in:
@@ -44,6 +44,11 @@ actor GatewayClient {
|
||||
while !Task.isCancelled {
|
||||
try await sendHeartbeat()
|
||||
try await Task.sleep(for: .milliseconds(helloMessage.heartbeat_interval))
|
||||
|
||||
if await !hbAck {
|
||||
// haven't heard back
|
||||
await ws.cancel()
|
||||
}
|
||||
}
|
||||
} catch {
|
||||
print("Heartbeat task canceled")
|
||||
@@ -127,7 +132,8 @@ actor GatewayClient {
|
||||
|
||||
private func attemptResume() async throws {
|
||||
guard
|
||||
ws.closeCode.rawValue != 4004 && ws.closeCode.rawValue < 4010,
|
||||
ws.closeCode.rawValue != 4004 && ws.closeCode.rawValue != 1000 &&
|
||||
ws.closeCode.rawValue != 1001 && ws.closeCode.rawValue < 4010,
|
||||
let resumeURL = resumeURL,
|
||||
let sessionID = sessionID,
|
||||
let sequenceNum = sequenceNum
|
||||
@@ -164,10 +170,6 @@ actor GatewayClient {
|
||||
hbAck = false
|
||||
let hbMessage = "{\"op\":1,\"d\":\(sequenceNum == nil ? "null" : String(sequenceNum!))}"
|
||||
try await ws.send(.string(hbMessage))
|
||||
try await Task.sleep(for: .seconds(5))
|
||||
if !hbAck {
|
||||
ws.cancel(with: .normalClosure, reason: nil)
|
||||
}
|
||||
}
|
||||
|
||||
var events: AsyncStream<GatewayPayload> {
|
||||
|
||||
Reference in New Issue
Block a user