Swift Websockets

This is a quick starter guide how to work with WebSockets in our Swift projects for iOS, iPadOS, tvOS, watchOS and macOS.

From iOS 13.0+, iPadOS 13.0+, macOS 10.15+, tvOS 13.0+ and watchOS 6.0+ you can use URLWebSocketTask. For earlier versions please refer here.

// Create the Connection

let url = URL(string: "wss://echo.websocket.org")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)
          
webSocketTask.resume()

// Send the Data

webSocketTask.send(.string("Hello")) { error in
    if let error = error {
    print("Error when sending a message \(error)")
  }
}

// Receive the Data

webSocketTask.receive { result in
  switch result {
  case .success(let message):
    switch message {
    case .data(let data):
      print("Data received \(data)")
    case .string(let text):
      print("Text received \(text)")
    }
  case .failure(let error):
    print("Error when receiving \(error)")
  }
}

// Ping/Pong

webSocketTask.sendPing { error in
    if let error = error {
    print("Error when sending PING \(error)")
  }
}

// Close the Connection

let reason = "Goodbye".data(using: .utf8)
webSocketTask.cancel(with: .goingAway, reason: reason)
Swift playgrounds Download Playground