рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдЖрдИрдУрдПрд╕ рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡реЗрд░рд┐рдПрдВрдЯ / рд╡реЗрдмрд╕реЛрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдиреЗрдЬрд░ рд▓рд┐рдЦрд╛

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░ред

4 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдИрдУрдПрд╕ рдореЗрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рдлрд┐рд░ рдореИрдВрдиреЗ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛, рд▓реЗрдЦ рд╣реИрдмреЗ рдкрд░ рд╣реИ ред рдФрд░ рдЖрдЬ рдореИрдВ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рджреЗрд╢реА рдмрд┐рдирд╛ рдХреЛрдХреЛрдкреЛрдбреНрд╕ рдХреЗред

рдореИрдВрдиреЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рдмрдВрдзрдХ рдПрдХ рдПрдХрд▓ рд╡рд░реНрдЧ рд╣реИ рдЬрд┐рд╕реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХрд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛)ред

рдореИрдВ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓ рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред

import Foundation class WSManager { public static let shared = WSManager() //   private init(){} private var dataArray = [__]() let webSocketTask = URLSession(configuration: .default).webSocketTask(with: URL(string: "wss://__"*)) //   public func connectToWebSocket() { webSocketTask.resume() self.receiveData() { _ in } } //     public func subscribeBtcUsd() { let message = URLSessionWebSocketTask.Message.string("SUBSCRIBE: __") webSocketTask.send(message) { error in if let error = error { print("WebSocket couldn't send message because: \(error)") } } } //     public func unSubscribeBtcUsd() { let message = URLSessionWebSocketTask.Message.string("UNSUBSCRIBE: __ ") webSocketTask.send(message) { error in if let error = error { print("WebSocket couldn't send message because: \(error)") } } } //  ,       func receiveData(completion: @escaping ([__]?) -> Void) { webSocketTask.receive { result in switch result { case .failure(let error): print("Error in receiving message: \(error)") case .success(let message): switch message { case .string(let text): let data: Data? = text.data(using: .utf8) let srvData = try? CODABLE_____.decode(from: data ?? Data()) for singleData in srvData ?? [] { self.dataArray.append(__(1: singleData.parametr1, 2: singleData.parametr2, 3: singleData.parametr3)) } case .data(let data): //         print("Received data: \(data)") @unknown default: debugPrint("Unknown message") } self.receiveData() {_ in } //  } } completion(self.dataArray) //          } } 

рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреНрд░рдмрдВрдзрдХ, рдПрдХ рдХреЙрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

 import UIKit class MainViewController: UIViewController { private var dataArray = [__]() override func viewDidLoad() { super.viewDidLoad() WSManager.shared.connectToWebSocket() //  WSManager.shared.subscribeBtcUsd() //    self.getData() //  } private func getData() { //  WSManager.shared.receiveData() { [weak self] (data) in guard let self = self else { return } guard let data = data else { return } self.dataArray = data //              } } } 

* рдкрддреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
wss: // рдпрд╣ https рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ: //
ws: // рдпрд╣ http рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ: //

рдпрд╣ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдирд┐рдХрд▓рд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреНрд░рд╢реНрди, рд╕реБрдЭрд╛рд╡, рд╢рд┐рдХреНрд╖рдг рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ, рд▓рд┐рдЦреЛ, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА :)

рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рдореЗрд░реЗ рдЧрд┐рддреБрдм рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ

рдореИрдВ рдбрд┐рдХреЛрдбреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореЗрд░реЗ рдЧреАрдереВрдм рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ
рдореИрдВ рдЗрд╕ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ

 let srvData = try? CODABLE_____.decode(from: data ?? Data()) 

Source: https://habr.com/ru/post/hi485468/


All Articles