【Swift】Starscream 实现socket连接

发布时间:2025-12-09 11:51:48 浏览次数:1

import UIKitimport Starscreamclass ViewController: UIViewController,WebSocketDelegate {    var socket: WebSocket!    var isConnected = false    let server = WebSocketServer()            var button1 : UIButton!    var button2 : UIButton!        override func viewDidLoad() {        super.viewDidLoad()        configureView()    }        override func viewWillAppear(_ animated: Bool) {        super.viewWillAppear(animated)         var request = URLRequest(url: URL(string: "wss://5tdk1djuz1.execute-api.us-east-1.amazonaws.com/Dev")!) //https://localhost:8080        request.timeoutInterval = 5        request.setValue("eyJraWQiOiJMYjg3YnE4cHhTdk1oZmZSb1BGbUZSakh1bXR4R1BaTWFDTUErSElSQUQ4PSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiJjM2YxNzQ2Zi1hYjMzLTQ4NGMtYTRlOS05NGU1MmEwNTBkNjMiLCJldmVudF9pZCI6ImQ1YmE1OWNmLWYzNzctNDY5Yy1iODc5LTQ2Zjc3YTFkNDJlZiIsInRva2VuX3VzZSI6ImFjY2VzcyIsInNjb3BlIjoiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW4iLCJhdXRoX3RpbWUiOjE2MTkwNzU3ODAsImlzcyI6Imh0dHBzOlwvXC9jb2duaXRvLWlkcC51cy1lYXN0LTEuYW1hem9uYXdzLmNvbVwvdXMtZWFzdC0xX1lDVHRIS3o4ZyIsImV4cCI6MTYxOTE0Nzc4MCwiaWF0IjoxNjE5MDc1NzgwLCJqdGkiOiI3ZGI0ZmYwNi", forHTTPHeaderField: "accesstoken")        socket = WebSocket(request: request)        socket.delegate = self        socket.connect()            }    func configureView() {        button1 = UIButton.init(frame: CGRect(x: 50, y: 100, width: 200, height: 100))        button1.backgroundColor = .red        button1.addTarget(self, action: #selector(writeText(_:)), for: .touchUpInside)        self.view.addSubview(button1)                button2 = UIButton.init(frame: CGRect(x: 50, y: 300, width: 200, height: 100))        button2.backgroundColor = .red        button2.addTarget(self, action: #selector(writeText(_:)), for: .touchUpInside)        self.view.addSubview(button2)    }            // MARK: - WebSocketDelegate    func didReceive(event: WebSocketEvent, client: WebSocket) {        switch event {        case .connected(let headers):            isConnected = true            print("websocket is connected: \(headers)")        case .disconnected(let reason, let code):            isConnected = false            print("websocket is disconnected: \(reason) with code: \(code)")        case .text(let string):            print("Received text: \(string)")        case .binary(let data):            print("Received data: \(data.count)")        case .ping(_):            break        case .pong(_):            break        case .viabilityChanged(_):            break        case .reconnectSuggested(_):            break        case .cancelled:            isConnected = false        case .error(let error):            isConnected = false            handleError(error)        }    }            func handleError(_ error: Error?) {        if let e = error as? WSError {            print("websocket encountered an error: \(e.message)")        } else if let e = error {            print("websocket encountered an error: \(e.localizedDescription)")        } else {            print("websocket encountered an error")        }    }        // MARK: Write Text Action        @objc func writeText(_ sender: UIButton) {        socket.write(string: "hello there!")    }        // MARK: Disconnect Action        @objc func disconnect(_ sender: UIButton) {        if isConnected {            sender.setTitle("Connect", for: .normal)            socket.disconnect()        } else {            sender.setTitle("Disconnect", for: .normal)            socket.connect()        }    }}
starscream
需要做网站?需要网络推广?欢迎咨询客户经理 13272073477