Работал ли с веб сокетами

«Работал ли с веб сокетами» — вопрос из категории Сети, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. Веб-сокеты позволяют устанавливать двустороннее соединение между клиентом и сервером, что полезно для чатов, уведомлений или реальных обновлений данных.

Пример с OkHttp WebSocket:

val client = OkHttpClient()
val request = Request.Builder().url("ws://example.com/socket").build()
val webSocket = client.newWebSocket(request, object : WebSocketListener() {
    override fun onMessage(webSocket: WebSocket, text: String) {
        // Обработка сообщения
    }
    override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
        // Обработка ошибки
    }
})
webSocket.send("Hello!") // Отправка сообщения

Нюансы:

  • Нужно управлять жизненным циклом соединения (переподключение при разрыве).
  • Сервер может закрыть соединение, важно обрабатывать onClosed/onFailure.
  • Для фоновой работы требуется Foreground Service или WorkManager.