From a3e3dbdff9d53cb1093ae67be986320509ba67e2 Mon Sep 17 00:00:00 2001 From: "shalom.aviv" Date: Sun, 12 Jan 2025 22:28:43 +0300 Subject: [PATCH] Example code updated to use Client and ClientSubscription protocols --- Example/SwiftCentrifuge/ViewController.swift | 35 +++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/Example/SwiftCentrifuge/ViewController.swift b/Example/SwiftCentrifuge/ViewController.swift index 13b8cc4..9421138 100644 --- a/Example/SwiftCentrifuge/ViewController.swift +++ b/Example/SwiftCentrifuge/ViewController.swift @@ -17,9 +17,9 @@ class ViewController: UIViewController { @IBOutlet weak var connectButton: UIButton! @IBOutlet weak var resetReconnectStateButton: UIButton! - private var client: CentrifugeClient? - private var sub: CentrifugeSubscription? - + private var client: SwiftCentrifuge.Client? + private var sub: SwiftCentrifuge.ClientSubscription? + override func viewDidLoad() { super.viewDidLoad() @@ -29,21 +29,38 @@ class ViewController: UIViewController { NotificationCenter.default.addObserver(self, selector: #selector(self.connectClient(_:)), name: UIApplication.didBecomeActiveNotification, object: nil) let config = CentrifugeClientConfig( - token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0ZXN0c3VpdGVfand0In0.hPmHsVqvtY88PvK4EmJlcdwNuKFuy3BGaF7dMaKdPlw", + token: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0LXVzZXIiLCJleHAiOjE3MzczMTM1OTAsImlhdCI6MTczNjcwODc5MH0.4e0MRE0TnS6MsDtQasKq8FbL1AVRurWgH6qzW_i6sqA", tokenGetter: self, logger: PrintLogger() ) let url = "ws://127.0.0.1:8000/connection/websocket?cf_protocol=protobuf" - self.client = CentrifugeClient(endpoint: url, config: config, delegate: self) + self.client = CentrifugeClient.newClient(endpoint: url, config: config, delegate: self) + self.subscribe() + } + + func subscribe() { + guard sub == nil else { return } + + let channel = "chat:index" + do { - sub = try self.client?.newSubscription(channel: "chat:index", delegate: self) - sub!.subscribe() + sub = try self.client?.newClientSubscription(channel: channel, delegate: self) + sub?.subscribe() + print("Created subscription to \"\(channel)\"") } catch { - print("Can not create subscription: \(error)") + print("Can not create subscription to \"\(channel)\": \(error)") return } } + func unsubscribe() { + guard let sub else { return } + + client?.removeClientSubscription(sub) + self.sub = nil + print("Unsubscribed from \"\(sub.channel)\"") + } + override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) client?.connect() @@ -55,10 +72,12 @@ class ViewController: UIViewController { } @objc func disconnectClient(_ notification: Notification) { + unsubscribe() client?.disconnect() } @objc func connectClient(_ notification: Notification) { + subscribe() client?.connect() }