Home > AI > Uncategorized

Websocket – swift客户端

import UIKit
import Starscream

class GameViewController: UIViewController {
    private var socket: WebSocket!
    

    override func viewDidLoad() {
        super.viewDidLoad()
        

        socket = WebSocket(url: URL(string: "ws://echo.websocket.org")!)
        socket.delegate = self
        socket.connect()

        
    
    }
   
    deinit {
        socket.delegate = nil
        socket.disconnect()
    }

    override var shouldAutorotate: Bool {
        return true
    }
    
    override var prefersStatusBarHidden: Bool {
        return true
    }
    
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        if UIDevice.current.userInterfaceIdiom == .phone {
            return .allButUpsideDown
        } else {
            return .all
        }
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Release any cached data, images, etc that aren't in use.
    }

}


extension GameViewController: WebSocketDelegate{
    func websocketDidConnect(socket: WebSocket) {
        print("connected")
        socket.write(string: "hello")
    }
    
    func websocketDidDisconnect(socket: WebSocket, error: NSError?) {
        print("disconnected", error?.localizedDescription)
        //performSegue(withIdentifier: "websocketDisconnect", sender: self)
    }
    
    func websocketDidReceiveMessage(socket: WebSocket, text: String) {
        print("receive msg", text)
        guard let data = text.data(using: .utf16),
        let jsonData = try? JSONSerialization.jsonObject(with: data),
        let jsonDict = jsonData as? [String: Any],
        let msgType = jsonDict["type"] as? String else{
            return
        }
        
        //2
        if msgType == "message",
        let msgData = jsonDict["data"] as? [String: Any],
        let msgAuthor = msgData["author"] as? String,
            let msgText = msgData["text"] as? String {
            //msgReceived(msgText, senderName: msgAuthor)
        }
    }
    
    func websocketDidReceiveData(socket: WebSocket, data: Data) {
        print("receive data", data.count)
        return
    }
    
    
}

 

Related posts:

Leave a Reply