Como posso usar Socket em um projeto Swift?

Sou novo na programação do iOS e ainda estou a aprender rápido. Estou a tentar usar a Biblioteca socket https://github.com/facebook/SocketRocket em um projeto Swift, a fim de se conectar ao meu servidor Web, criado usando MAMP, através de tomadas Web. Eu sei que há Starscream https://github.com/daltoniam/Starscream Pronto para usar no Swift, mas dá erros e não consigo fazê-lo funcionar como expliquei aqui: Como corrigir " websocket está desligado: HTTP inválido actualizar " erro ao usar o Starscream

O soquete está escrito no Objective-C e eu não o entendo, tentei ver a documentação, mas não sei como traduzi-la para Swift e implementar os seus métodos no meu projecto. Já está instalado o 'Socket' com o Cocoapods. Então ele não precisa do arquivo header-bridging porque eu usei ' use_frameworks! no podfile.

Controlador de visualização.ficheiro swift:

Importar UIKit importar o 'Socket'

Controlador De Classe: UIViewController, SRWebSocketDelegate { //ERROR: o tipo 'ViewController' não está em conformidade com o protocolo 'SRWebSocketDelegate' deseja adicionar plataformas de Protocolo?

var urlRequest = NSURLRequest(URL: NSURL(string: "http://host.com")) //EROOR: Cannot convert value of type 'NSURL?' to expected argument type 'URL' Insert ' as! URL'

var socket = SRWebSocket(URLRequest: urlRequest)

//let socket = SRWebSocket(url: "ws://localhost:8888")

override func viewDidLoad() {
    super.viewDidLoad()

    socket.open()
    socket.send()
    socket.close()



}

func webSocketDidOpen(webSocket: SRWebSocket!) {
    print("socket opened");
}

func webSocket(webSocket: SRWebSocket!, didCloseWithCode code: Int, reason: String!, wasClean: Bool) {
    print("code: \(code) reason:\(reason) ");
}

func webSocket(webSocket: SRWebSocket!, didFailWithError error: NSError!) {
    print("error: \(error)");
}

func webSocket(webSocket: SRWebSocket!, didReceiveMessage message: AnyObject!) {
    print("received message")
}

}

Este é o código que tentei escrever... Mas há erros como mostrado nos comentários. Espero que me possam ajudar. Obrigado!!! :)

Author: JackieNBee, 2019-09-18

1 answers

Hi Cristian, você pode usar " pod 'Socket. IO-Client-Swift '" também que usa Starscream.

Para obter documentação, também pode procurar aqui. Socket.IO-Client-Swift

    private var socket: SocketIOClient?
    private var manager: SocketManager?


    private func initializeSocket() {

    self.manager = SocketManager(socketURL:  URL(string: self.baseUrlForSocket)!, config: [.log(true), .forceNew(true), .reconnectAttempts(10), .reconnectWait(6000), .connectParams(["authorization": authKey]), .forceWebsockets(true), .compress])

    self.socket = manager?.defaultSocket
 }

Aqui o baseUrlForSocket é o URL do 'socket' que lhe foi fornecido e o authKey é o valor de autorização.

Em caso de preocupação, por favor, avise-me.
 0
Author: Vikash Sinha, 2019-09-18 13:58:52