@@ -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
215218extension 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