Pugalmuni
Pugalmuni

Reputation: 9390

Websocket connection issue in iOS?

I am using web socket connection in my app. When I am trying to establish the web socket connection and it's not connected. I am using the Starscream for making the web socket connection. I've tried with many test WS Url for testing and none of the url is working. Currently I am testing in simulator. Are there any proxy issues or firewall issue?.

class ViewController: UIViewController, WebSocketDelegate {
var socket: WebSocket!

override func viewDidLoad() {
    super.viewDidLoad()
    let urlString = "wss://echo.websocket.org" // testing url 

    var request = URLRequest(url: URL(string: urlString)!)
    request.timeoutInterval = 30
    socket = WebSocket(request: request)
    socket.delegate = self
    socket.pongDelegate = self as? WebSocketPongDelegate
     socket.connect()
}

// MARK: Websocket Delegate Methods.
// Never call this method
func websocketDidConnect(socket: WebSocketClient) {
    print("websocket is connected")
}

func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
    if let e = error as? WSError {
        print("websocket is disconnected: \(e.message)")
    } else if let e = error {
        print("websocket is disconnected: \(e.localizedDescription)")
    } else {
         print("websocket disconnected")
    }
}

func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
    print("Received text: \(text)")
}

func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
    print("Received data: \(data.count)")
}

}

Upvotes: 0

Views: 3584

Answers (1)

Matthew Frankland
Matthew Frankland

Reputation: 80

Couple of things to check in case you haven't done these:

  • Remember apple blocks all non https urls by default. Change arbitrary loads to YES in - info.plist -> App Transport Security Settings > Allow Arbitrary Loads

  • Set self.socket.selfSignedSSL = true

Upvotes: 2

Related Questions