Ответ
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-запроса. И наоборот.