С какими сетевыми протоколами работал

Ответ

HTTP/HTTPS - для REST API, WebSocket - для real-time коммуникаций, TCP/UDP - для низкоуровневых задач.

Пример HTTP с Retrofit:

interface ApiService {
    @GET("users/{id}")
    suspend fun getUser(@Path("id") userId: String): User
}

val retrofit = Retrofit.Builder()
    .baseUrl("https://api.example.com/")
    .build()
val service = retrofit.create(ApiService::class.java)

WebSocket с OkHttp:

val client = OkHttpClient()
val request = Request.Builder().url("ws://echo.websocket.org").build()
val listener = object : WebSocketListener() {
    override fun onMessage(webSocket: WebSocket, text: String) {
        // Обработка сообщения
    }
}
client.newWebSocket(request, listener)

Дополнительно: MQTT для IoT, gRPC для бинарной коммуникации.

Ответ 18+ 🔞

Блин, смотри, тут протоколов как говна за баней — овердохуища. Каждый для своего дела, а если накосячить с выбором — потом сиди и ебись с глюками.

Ну, короче, если тебе обычное API наладить, где ты запросил — тебе ответили, то это HTTP/HTTPS, классика жанра. Всё через эти GET, POST и прочую хуйню. Взял Retrofit, настроил — и пашешь.

interface ApiService {
    @GET("users/{id}")
    suspend fun getUser(@Path("id") userId: String): User
}

Сделал интерфейс, объявил функцию — и всё, ёпта. Retrofit сам всю эту муть с запросами и ответами разгребает. Красота же.

А вот если тебе надо, чтобы сервер тебе сам что-то пихал, без твоего запроса — типа чаты, уведомления в реальном времени — тут уже WebSocket в дело идёт. Это как труба постоянная, подключился и слушаешь, что тебе шлют.

val listener = object : WebSocketListener() {
    override fun onMessage(webSocket: WebSocket, text: String) {
        // Обработка сообщения
    }
}

Настроил слушателя, и как только на той стороне что-то бухнули — у тебя onMessage срабатывает. Удобно, блядь.

Ну а если ты совсем уж в дебри полез, пишешь какую-нибудь игрушку или свой протокол, где каждую миллисекунду считать надо — тогда TCP/UDP. Это уже низкоуровневое говно, где сам всё контролируешь: надёжность, порядок пакетов. Но и возни с ним — просто пиздец, волнение ебать. Одно не так написал — и всё, накрылось медным тазом твоё соединение.

И да, есть ещё другие звери для специфичных задач. MQTT — это для этих ваших умных лампочек и чайников (IoT, блядь). Лёгкий такой, для слабых устройств. А gRPC — это когда надо два сервиса между собой так жёстко и быстро общаться, бинарными данными. Там свои заморочки, но скорость — ни хуя себе.

Главное — не будь распиздяем, выбирай инструмент по задаче. Не тащи WebSocket туда, где хватит разового HTTP-запроса. И наоборот.