Вопрос проверяет умение работать с низкоуровневым API WebSocket в iOS без сторонних обёрток.
В iOS 13+ используют URLSessionWebSocketTask из URLSession. Создают задачу с URL ws://..., вызывают resume(), затем запускают циклические receive и send для обмена сообщениями.
Создание задачи:
let url = URL(string: "wss://example.com/socket")!
let task = URLSession.shared.webSocketTask(with: url)
task.resume()Приём сообщений:
func receive() {
task.receive { result in
switch result {
case .failure(let err): print(err)
case .success(let message):
switch message {
case .string(let text): print("Text:", text)
case .data(let data): print("Data:", data)
@unknown default: break
}
self.receive() // цикл
}
}
}Отправка:
task.send(.string("Hello")) { error in
if let e = error { print(e) }
}Закрытие соединения:
task.cancel(with: .goingAway, reason: nil)Вывод:URLSessionWebSocketTask обеспечивает нативную работу с WebSocket, устраняя необходимость сторонних библиотек.