dont use multiple threads to respond to messages

This commit is contained in:
2026-03-25 17:44:34 -04:00
committed by Andrew Glaze
parent a1ed1564b9
commit 4baf209d1a

View File

@@ -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> {