Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про IOS: websocket, urlsession, websockettask

Как реализовать нативный WebSocket-клиент без использования SignalR?

Вопрос проверяет умение работать с низкоуровневым 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, устраняя необходимость сторонних библиотек.

Уровень

  • Рейтинг:

    2

  • Сложность:

    7

Навыки

  • IOS

    IOS

Ключевые слова

#websocket

#urlsession

#websockettask

Подпишись на iOS Developer в телеграм