Skip to content

Commit 259d9b6

Browse files
committed
Fix connect handling in StarscreamWebSocket
1 parent 80eb076 commit 259d9b6

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

Diff for: Sources/LighthouseWebSocket/Implementation/StarscreamWebSocket.swift

+11
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#if canImport(Starscream)
22
import Foundation
3+
import Logging
34
import Starscream
45

6+
private let log = Logger(label: "LighthouseWebSocket.StarscreamWebSocket")
7+
58
public final class _StarscreamWebSocket: WebSocketProtocol, Starscream.WebSocketDelegate {
69
private var webSocket: Starscream.WebSocket
710
private var connectHandlers: [(Result<Void, any Error>) -> Void] = []
@@ -13,18 +16,25 @@ public final class _StarscreamWebSocket: WebSocketProtocol, Starscream.WebSocket
1316
}
1417

1518
public func connect() async throws {
19+
log.trace("Connecting")
1620
try await withCheckedThrowingContinuation { continuation in
1721
connectHandlers.append(continuation.resume(with:))
1822
webSocket.connect()
1923
}
2024
}
2125

2226
public func onBinary(_ handler: @escaping (Data) -> Void) throws {
27+
log.trace("Adding binary message handler")
2328
binaryMessageHandlers.append(handler)
2429
}
2530

2631
public func didReceive(event: WebSocketEvent, client: any WebSocketClient) {
32+
log.trace("Received WebSocketEvent \(event)")
2733
switch event {
34+
case .connected(_):
35+
while let handler = connectHandlers.popLast() {
36+
handler(.success(()))
37+
}
2838
case .error(let error):
2939
while let handler = connectHandlers.popLast() {
3040
handler(.failure(error ?? WebSocketError.unknown))
@@ -39,6 +49,7 @@ public final class _StarscreamWebSocket: WebSocketProtocol, Starscream.WebSocket
3949
}
4050

4151
public func send(_ data: Data) async throws {
52+
log.trace("Sending binary message")
4253
await withCheckedContinuation { continuation in
4354
webSocket.write(data: data, completion: continuation.resume)
4455
}

0 commit comments

Comments
 (0)