Bibliotecas WebSocket Kotlin para criar tempo real em aplicações web

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Bibliotecas WebSocket Kotlin: criando aplicações em tempo real



WebSocket é um protocolo que fornece uma conexão bidirecional permanente entre cliente e servidor. Diferente do HTTP, onde a requisição é enviada pelo cliente e o servidor responde, o WebSocket permite que o servidor inicie o envio de dados sem requisição. Isso o torna ideal para chats, jogos online, cotações de bolsa, notificações e outros sistemas que exigem transmissão instantânea de dados.



Kotlin, sendo uma linguagem JVM moderna, oferece várias bibliotecas poderosas para trabalhar com WebSocket. Neste artigo, veremos três opções mais populares: Ktor, OkHttp e kweb.



1. Ktor – framework para servidores e clientes



Ktor é um framework assíncrono da JetBrains, totalmente escrito em Kotlin. Ele suporta WebSocket tanto no lado do servidor quanto no lado do cliente. Ktor usa corrotinas, tornando o código conciso e eficiente.



Instalação (Gradle)

dependencies {    implementation("io.ktor:ktor-server-core:2.3.0")    implementation("io.ktor:ktor-server-netty:2.3.0")    implementation("io.ktor:ktor-server-websockets:2.3.0")    implementation("io.ktor:ktor-client-core:2.3.0")    implementation("io.ktor:ktor-client-cio:2.3.0")    implementation("io.ktor:ktor-client-websockets:2.3.0")}


Exemplo de servidor com Ktor

import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.routing.*import io.ktor.server.websocket.*import io.ktor.websocket.*

fun main() { embeddedServer(Netty, port = 8080) { install(WebSockets) routing { webSocket("/chat") { send(Frame.Text("Bem-vindo ao chat!")) for (frame in incoming) { if (frame is Frame.Text) { val text = frame.readText() send(Frame.Text("Você escreveu: $text")) } } } } }.start(wait = true)}


Exemplo de cliente com Ktor

import io.ktor.client.*import io.ktor.client.engine.cio.*import io.ktor.client.plugins.websocket.*import io.ktor.websocket.*import kotlinx.coroutines.*

fun main() = runBlocking { val client = HttpClient(CIO) { install(WebSockets) } client.webSocket("ws://localhost:8080/chat") { send(Frame.Text("Olá, servidor!")) for (frame in incoming) { if (frame is Frame.Text) { println("Resposta: ${frame.readText()}") } } } client.close()}


Vantagens do Ktor:

  • Suporte completo a corrotinas Kotlin
  • Processamento assíncrono sem bloqueios
  • Sintaxe unificada para servidor e cliente
  • Suporte nativo a SSL, compressão e outros protocolos


2. OkHttp – cliente HTTP/WebSocket confiável



OkHttp é uma biblioteca popular da Square, originalmente focada em HTTP, mas com excelente suporte a WebSocket. É usada no desenvolvimento Android e em aplicações servidoras. OkHttp funciona de forma síncrona e assíncrona, suporta reconexão e pool de conexões.



Instalação (Gradle)

dependencies {    implementation("com.squareup.okhttp3:okhttp:4.12.0")}


Exemplo de cliente com OkHttp

import okhttp3.*

fun main() { val client = OkHttpClient() val request = Request.Builder().url("ws://echo.websocket.org").build() val ws = client.newWebSocket(request, object : WebSocketListener() { override fun onOpen(webSocket: WebSocket, response: Response) { webSocket.send("Olá do OkHttp!") } override fun onMessage(webSocket: WebSocket, text: String) {

Recommendations