WebSockets en Kotlin: Creando aplicaciones en tiempo real desde cero

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

WebSockets en Kotlin: de la teoría a la magia en tiempo real



Imagina que abres un mensajero, envías un mensaje — y aparece instantáneamente en el interlocutor. Sin recargar la página, sin solicitudes constantes al servidor. Esto no es magia, son WebSockets en Kotlin. Si alguna vez quisiste crear tu propio chat, sistema de notificaciones en tiempo real o juego multijugador — has llegado al lugar indicado.



En este artículo analizaremos cómo funcionan los WebSockets, escribiremos una aplicación en tiempo real completa en Kotlin usando Ktor, y te mostraré el código que puedes ejecutar de inmediato. ¡Vamos allá!



¿Qué son los WebSockets y por qué se necesitan en Kotlin?



WebSocket es un protocolo de comunicación bidireccional entre cliente y servidor sobre una única conexión TCP. A diferencia del HTTP clásico, donde el cliente siempre inicia la solicitud, WebSocket permite que el servidor envíe datos al cliente en cualquier momento.



¿Por qué es mejor WebSocket que HTTP?

  • Inmediatez: los datos se entregan en milisegundos
  • Ahorro de tráfico: sin cabeceras adicionales como en HTTP
  • Bidireccionalidad: el servidor puede iniciar el envío
  • Conexión permanente: no es necesario restablecerla cada vez


Kotlin con sus corrutinas y el framework Ktor es ideal para trabajar con WebSockets. Asincronía, ligereza y sintaxis expresiva — eso es lo que hace que el desarrollo con Kotlin WebSocket sea tan agradable.



¿Cuándo usar WebSockets?

Aquí hay varios escenarios donde las aplicaciones en tiempo real con Kotlin y WebSockets serán indispensables:

  • Chats y mensajería — transmisión de mensajes en tiempo real
  • Sistemas de notificaciones — alertas, ventanas emergentes, actualizaciones de estado
  • Juegos en línea — sincronización de jugadores
  • Cotizaciones bursátiles — actualización de precios sin recargar
  • Edición colaborativa — funcionalidad tipo Google Docs


Configuración del proyecto: Ktor + WebSockets

Para crear un servidor WebSocket en Kotlin usaremos Ktor — un framework asíncrono moderno de JetBrains. Configuremos el proyecto.



Paso 1: Agregar dependencias

Si usas Gradle (y estoy seguro de que lo haces), agrega en 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")}


Paso 2: Crear el servidor WebSocket

Ahora escribamos el servidor. Aceptará conexiones y transmitirá mensajes a todos los clientes conectados — la lógica básica de un 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") { // Agregamos el cliente clients.add(this) println("Nueva conexión: $this")

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

// Enviamos a todos los clientes

Blogs

Book Recommendations