WebSocket em Kotlin: aplicações em tempo real do A ao Z

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

WebSocket em Kotlin: criação de aplicações em tempo real do zero



As aplicações web modernas exigem cada vez mais transferência instantânea de dados entre cliente e servidor. O HTTP tradicional, que funciona no princípio de "requisição-resposta", não é adequado para tarefas que exigem comunicação bidirecional constante — chats, jogos online, cotações de bolsa ou notificações em tempo real. É aqui que o protocolo WebSocket entra em ação. Neste artigo, vamos explorar como criar aplicações em tempo real em Kotlin usando WebSocket, desde a teoria básica até exemplos práticos.



Kotlin, graças à sua concisão, segurança e total compatibilidade com o ecossistema Java, é uma excelente escolha para o desenvolvimento de backend. Como framework principal, usaremos o Ktor — um framework assíncrono moderno para Kotlin que possui suporte nativo a WebSocket.



O que é WebSocket e por que é necessário?



WebSocket é um protocolo que fornece comunicação full-duplex (bidirecional) entre cliente e servidor através de uma única conexão TCP persistente. Ao contrário do HTTP, onde o cliente é sempre o iniciador da requisição, o WebSocket permite que o servidor envie dados ao cliente a qualquer momento.



Principais vantagens do WebSocket:

  • Baixa latência: Sem custos adicionais para estabelecer uma nova conexão para cada mensagem.
  • Eficiência: Tráfego de controle mínimo (apenas 2 bytes por mensagem após o estabelecimento da conexão).
  • Conexão persistente: O servidor pode enviar dados em tempo real sem necessidade de polling do cliente.


WebSocket é ideal para:

  • Chats online e mensageiros
  • Edição colaborativa de documentos
  • Cotações de bolsa e financeiras
  • Jogos multijogador
  • Notificações push e monitoramento


Configuração do projeto Ktor para WebSocket



Antes de escrever código, é necessário configurar o projeto. A maneira mais fácil é através do IntelliJ IDEA com o plugin Ktor, ou manualmente via Gradle.



Passo 1: Criação do projeto

Crie um novo projeto Gradle com Kotlin (JVM). No arquivo build.gradle.kts, adicione as seguintes dependências:



plugins {    kotlin("jvm") version "1.9.22"    id("io.ktor.plugin") version "2.3.7"}

application { mainClass.set("ApplicationKt")}

dependencies { implementation("io.ktor:ktor-server-core:2.3.7") implementation("io.ktor:ktor-server-netty:2.3.7") implementation("io.ktor:ktor-server-websockets:2.3.7") implementation("ch.qos.logback:logback-classic:1.4.14")}


Passo 2: Estrutura básica do servidor

Crie o arquivo Application.kt e escreva um servidor WebSocket mínimo:



import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.websocket.*import io.ktor.websocket.*import kotlinx.coroutines.delay

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


Este código inicia um servidor na porta 8080, que aceita conexões WebSocket no endereço /chat. Ao conectar, o cliente recebe uma mensagem de boas-vindas e, em seguida, o servidor responde a cada mensagem de texto com um eco.



Criação de um chat avançado com salas



Agora vamos para um exemplo mais complexo — um chat m

Blogs

Book Recommendations