Skip to content

Commit 05d6e9d

Browse files
committed
Add debug for Starscream
1 parent c97bb6b commit 05d6e9d

File tree

3 files changed

+36
-23
lines changed

3 files changed

+36
-23
lines changed

Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ let package = Package(
1414
],
1515
dependencies: [
1616
.package(name: "BigInt", url: "https://github.com/attaswift/BigInt.git", from: "5.2.1"),
17-
.package(name: "Starscream", url: "https://github.com/daltoniam/Starscream", from: "3.1.1")
17+
.package(name: "Starscream", url: "https://github.com/daltoniam/Starscream", from: "4.0.8")
1818
],
1919
targets: [
2020
.target(

Sources/Network/Websocket/Websocket.swift

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,10 @@ public extension Flow {
5656
isConnecting = true
5757
var request = URLRequest(url: url)
5858
request.timeoutInterval = timeoutInterval
59-
socket = WebSocket(request: request)
59+
60+
let pinner = FoundationSecurity(allowSelfSigned: true) // do not validate SSL certificates
61+
socket = WebSocket(request: request, certPinner: pinner)
62+
6063
socket?.delegate = self
6164
socket?.connect()
6265
}
@@ -179,7 +182,7 @@ public extension Flow {
179182
}
180183

181184
public func unsubscribe(subscriptionId: String) {
182-
let request = SubscribeRequest<EmptyArguments>(id: subscriptionId, action: .unsubscribe, topic: .blocks, arguments: nil)
185+
let request = SubscribeRequest<EmptyArguments>(id: subscriptionId, action: .unsubscribe, topic: nil, arguments: nil)
183186
do {
184187
let data = try encoder.encode(request)
185188
socket?.write(data: data)
@@ -213,25 +216,35 @@ public extension Flow {
213216
// MARK: - WebSocketDelegate
214217

215218
extension Flow.Websocket: WebSocketDelegate {
216-
public func websocketDidConnect(socket: any Starscream.WebSocketClient) {
217-
isConnected = true
218-
isConnecting = false
219-
connectionSubject.send(())
220-
Flow.Publisher.shared.publishConnectionStatus(isConnected: true)
221-
}
222-
223-
public func websocketDidDisconnect(socket: any Starscream.WebSocketClient, error: (any Error)?) {
224-
isConnected = false
225-
isConnecting = false
226-
Flow.Publisher.shared.publishConnectionStatus(isConnected: false)
227-
}
228-
229-
public func websocketDidReceiveMessage(socket: any Starscream.WebSocketClient, text: String) {
230-
handleTextMessage(text)
231-
}
232219

233-
public func websocketDidReceiveData(socket: any Starscream.WebSocketClient, data: Data) {
234-
handleBinaryMessage(data)
220+
public func didReceive(event: WebSocketEvent, client: any Starscream.WebSocketClient) {
221+
switch event {
222+
case .connected:
223+
isConnected = true
224+
isConnecting = false
225+
connectionSubject.send(())
226+
Flow.Publisher.shared.publishConnectionStatus(isConnected: true)
227+
228+
case .disconnected(_, _):
229+
isConnected = false
230+
isConnecting = false
231+
Flow.Publisher.shared.publishConnectionStatus(isConnected: false)
232+
233+
case .text(let string):
234+
handleTextMessage(string)
235+
236+
case .binary(let data):
237+
handleBinaryMessage(data)
238+
239+
case .error(let error):
240+
print("WebSocket error: \(String(describing: error))")
241+
let wsError = WebSocketError.serverError(SocketError(code: -1, message: error?.localizedDescription ?? "Unknown error"))
242+
subscriptions.values.forEach { $0.subject.send(completion: .failure(wsError)) }
243+
Flow.Publisher.shared.publishError(wsError)
244+
245+
default:
246+
break
247+
}
235248
}
236249

237250
private func handleTextMessage(_ text: String) {

0 commit comments

Comments
 (0)