WebSockets em Kotlin: Criando aplicações em tempo real do zero

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

WebSockets em Kotlin: da teoria à magia em tempo real



Imagine que você abriu um mensageiro, enviou uma mensagem — e ela apareceu instantaneamente para o interlocutor. Sem recarregar a página, sem requisições constantes ao servidor. Isso não é mágica, são WebSockets em Kotlin. Se você já quis criar seu próprio chat, sistema de notificações em tempo real ou jogo multiplayer, está no lugar certo.



Neste artigo, vamos entender como os WebSockets funcionam, escrever uma aplicação em tempo real completa em Kotlin usando Ktor, e mostrarei um código que você pode executar imediatamente. Vamos lá!



O que são WebSockets e por que são necessários em Kotlin?



WebSocket é um protocolo de comunicação bidirecional entre cliente e servidor sobre uma única conexão TCP. Diferente do HTTP clássico, onde o cliente sempre inicia a requisição, o WebSocket permite que o servidor envie dados ao cliente a qualquer momento.



Por que o WebSocket é melhor que o HTTP?

  • Instantaneidade: os dados são entregues em milissegundos
  • Economia de tráfego: sem cabeçalhos extras como no HTTP
  • Bidirecionalidade: o servidor pode iniciar o envio
  • Conexão permanente: não precisa ser restabelecida a cada vez


Kotlin, com suas corrotinas e o framework Ktor, é ideal para trabalhar com WebSockets. Assincronicidade, leveza e sintaxe expressiva — é isso que torna o desenvolvimento com Kotlin WebSocket tão agradável.



Quando usar WebSockets?

Aqui estão alguns cenários onde aplicações em tempo real com Kotlin e WebSockets serão indispensáveis:

  • Chats e mensageiros — transmissão de mensagens em tempo real
  • Sistemas de notificações — alertas, pop-ups, atualizações de status
  • Jogos online — sincronização de jogadores
  • Cotações de bolsa — atualização de preços sem recarregar
  • Edição colaborativa — funcionalidade estilo Google Docs


Configuração do projeto: Ktor + WebSockets

Para criar um servidor WebSocket em Kotlin, usaremos o Ktor — um framework assíncrono moderno da JetBrains. Vamos configurar o projeto.



Passo 1: Adicionar dependências

Se você usa Gradle (e tenho certeza que sim), adicione em build.gradle.kts:

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: Criar o servidor WebSocket

Agora vamos escrever o servidor propriamente dito. Ele aceitará conexões e transmitirá mensagens para todos os clientes conectados — a lógica básica de um chat.

import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.websocket.*import io.ktor.websocket.*import kotlinx.coroutines.channels.Channelimport kotlinx.coroutines.launch

fun main() { val clients = mutableSetOf<WebSocketSession>()

embeddedServer(Netty, port = 8080) { install(WebSockets) { pingPeriod = 15_000 // 15 segundos timeout = 15_000 maxFrameSize = Long.MAX_VALUE }

routing { webSocket("/chat") { // Adiciona o cliente clients.add(this) println("Nova conexão: $this")

try { for (frame in incoming) { if (frame is Frame.Text) { val message = frame.readText() println("Recebido: $message")

// Envia para todos os clientes

Blogs

Book Recommendations