title: Why is Starscream not working anymore on real Apple Watch (WatchOS 6)?
body: <p>Recently I upgraded my Apple Watch to WatchOS 6.0.1, my iPhone to iOS 13.1.2, Xcode to 11.1. MacOS still 10.14.6.</p>
  
  <p>I've created an Independent Apple Watch project where I test the communication between the Watch and a WebSocket server using Starscream: <a href="https://github.com/daltoniam/Starscream" rel="nofollow noreferrer">https://github.com/daltoniam/Starscream</a></p>
  
  <p>It <strong>works perfectly on the Simulator</strong> but on <strong>real Apple Watch</strong> when I try to connect to the server I <strong>got these errors</strong>:</p>
  
  <pre><code>2019-10-08 18:57:53.064887+0200 BackgroundWebSocketOnlyWatch WatchKit Extension[251:31011] [] nw_connection_get_connected_socket [C1] Client called nw_connection_get_connected_socket on unconnected nw_connection
  
  2019-10-08 18:57:53.068928+0200 BackgroundWebSocketOnlyWatch WatchKit Extension[251:31011] TCP Conn 0x16d8d5f0 Failed : error 0:50 [50]
  
  websocket is disconnected: Optional("The operation couldn’t be completed. Network is down")
  </code></pre>
  
  <p>I'll show you the code of my app:</p>
  
  <p><strong>InterfaceController.swift</strong></p>
  
  <pre><code>import WatchKit
  import Foundation
  import Starscream
  
  class InterfaceController: WKInterfaceController, WebSocketDelegate {
  
  let socket = WebSocket(url: URL(string: "ws://echo.websocket.org/")!)
  
  @IBOutlet var label: WKInterfaceLabel!
  
  /**************************************************************************************************/
  
  override func awake(withContext context: Any?) {
      super.awake(withContext: context)
  
      socket.delegate = self
  }
  
  override func willActivate() {
      // This method is called when watch view controller is about to be visible to user
      super.willActivate()
  }
  
  override func didDeactivate() {
      // This method is called when watch view controller is no longer visible
      super.didDeactivate()
  }
  
  /************************************************************************************************/
  
  @IBAction func connectButtonPressed() {
  
      socket.connect()
  }
  
  @IBAction func sendButtonPressed() {
  
      socket.write(string: "Hi!")
  }
  
  @IBAction func disconnectButtonPressed() {
  
      socket.disconnect()
  }
  
  /******************************************************************************************/
  
  func websocketDidConnect(socket: WebSocketClient) {
      print("websocket is connected")
      label.setText("Connected")
  }
  func websocketDidDisconnect(socket: WebSocketClient, error: Error?) {
      print("websocket is disconnected: \(error?.localizedDescription)")
      label.setText("Disconnected")
  }
  func websocketDidReceiveMessage(socket: WebSocketClient, text: String) {
      print("got some text: \(text)")
      label.setText("Received: \(text)")
      createVibration()
  
  }
  func websocketDidReceiveData(socket: WebSocketClient, data: Data) {
      print("got some data: \(data.count)")
  }
  /******************************************************************************************/
  
  // Creates vibration
  func createVibration() {
  
      WKInterfaceDevice.current().play(.notification)
      print("Vibration created")
  }
  </code></pre>
  
  <p>}</p>
  
  <p>I tried using <strong>Starscream</strong> with <strong>iOS 13.1.2</strong> and it <strong>works perfectly both on Simulator and real iPhone</strong>.</p>
  
  <p>Is this a <strong>bug</strong> of WatchOS 6 or is Starscream that needs an upgrade?</p>
  
  <p>Thanks in advance! :)</p>
  
  <hr>
  
  <p><strong>EDIT:</strong> 5th November 2019</p>
  
  <p>I've updated my Apple Watch to WatchOS 6.1 and iPhone to iOS 13.2 and WebSocket still doesn't work on the watch...</p>
  
  <p>Got some new errors though:</p>
  
  <pre><code>2019-11-05 12:33:29.317757+0100 BackgroundWebSocketBothDevices WatchKit Extension[269:37201] dnssd_clientstub ConnectToServer: connect() failed path:/var/run/mDNSResponder Socket:4 Err:-1 Errno:1 Operation not permitted
  
  2019-11-05 12:33:29.317919+0100 BackgroundWebSocketBothDevices WatchKit Extension[269:37201] [] nw_resolver_create_dns_service_locked [C1] DNSServiceCreateDelegateConnection failed: ServiceNotRunning(-65563)
  
  2019-11-05 12:33:29.319083+0100 BackgroundWebSocketBothDevices WatchKit Extension[269:37255] [] nw_connection_get_connected_socket [C1] Client called nw_connection_get_connected_socket on unconnected nw_connection
  
  2019-11-05 12:33:29.319150+0100 BackgroundWebSocketBothDevices WatchKit Extension[269:37255] TCP Conn 0x155a7360 Failed : error 0:-65563 [-65563]
  
  websocket is disconnected: The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -72000.)
  </code></pre>