WWWebSocket

Swift-5.6 iOS-14.0 Swift Package Manager-SUCCESS LICENSE

Introduction - 简介

WWWebSocket

Installation with Swift Package Manager

dependencies: [
    .package(url: "https://github.com/William-Weng/WWWebSocket.git", .upToNextMajor(from: "1.1.3"))
]

Function - 可用函数

函数 功能
connent(with:delegate:configuration:delegateQueue:) WebSocket 连接 => 接收消息
sendMessage(_:result:) 发送消息
cancel(with:reason:) 关闭连接

WWWebSocketDelegate

函数 功能
didOpenWithProtocol(_:) 连接已打开
didCloseWith(_:reason:) 关闭连接
receiveMessageResult(_:) 接收连接数据

Example

import UIKit
import WWPrint
import WWWebSocket

final class ViewController: UIViewController {
    
    @IBOutlet weak var resultLabel: UILabel!
    
    private let url = "wss://demo.piesocket.com/v3/channel_123?api_key=VCXCEuvhGcBDP7XhiJJUDvR1e1D3eiVjgZ9VRiaV&notify_self"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        connect(with: url)
    }
}

// MARK: - WWWebSocketDelegate
extension ViewController: WWWebSocketDelegate {
    
    func didOpenWithProtocol(_ protocol: String?) {
        wwPrint("connected => \(String(describing: `protocol`))")
    }
    
    func didCloseWith(_ closeCode: URLSessionWebSocketTask.CloseCode, reason: Data?) {
        wwPrint("disconnected => \(closeCode), \(String(describing: reason))")
    }
    
    func receiveMessageResult(_ result: Result<URLSessionWebSocketTask.Message, Error>) {
        
        switch result {
        case .failure(let error): wwPrint(error)
        case .success(let message):
            switch message {
            case .string(let string): self.resultLabel.text = string
            case .data(let data): wwPrint(data)
            @unknown default: break
            }
        }
    }
}

// MARK: - 小工具
private extension ViewController {
    
    /// [WebSocket連線](https://www.piesocket.com/websocket-tester)
    /// - Parameter url: String
    func connect(with url: String) {
        WWWebSocket.shared.connent(with: url, delegate: self)
    }
}