Como posso usar Socket em um projeto Swift?
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!!! :)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.