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.
let url = URL(string: "wss://echo.websocket.org")!
let webSocketTask = URLSession.shared.webSocketTask(with: url)
webSocketTask.resume()
webSocketTask.send(.string("Hello")) { error in
if let error = error {
print("Error when sending a message \(error)")
}
}
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)")
}
}
webSocketTask.sendPing { error in
if let error = error {
print("Error when sending PING \(error)")
}
}
let reason = "Goodbye".data(using: .utf8)
webSocketTask.cancel(with: .goingAway, reason: reason)