WebSocket en Kotlin: aplicaciones en tiempo real de la A a la Z

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

WebSocket en Kotlin: creación de aplicaciones en tiempo real desde cero



Las aplicaciones web modernas requieren cada vez más la transmisión instantánea de datos entre el cliente y el servidor. El HTTP tradicional, que funciona bajo el principio de «solicitud-respuesta», no es adecuado para tareas que necesitan una comunicación bidireccional constante — chats, juegos en línea, cotizaciones bursátiles o notificaciones en tiempo real. Es aquí donde el protocolo WebSocket viene al rescate. En este artículo, analizaremos cómo crear aplicaciones en tiempo real en Kotlin utilizando WebSocket, desde la teoría básica hasta ejemplos prácticos.



Kotlin, gracias a su concisión, seguridad y compatibilidad total con el ecosistema Java, es una excelente opción para el desarrollo del lado del servidor. Como framework principal utilizaremos Ktor — un framework asíncrono moderno para Kotlin que tiene soporte integrado para WebSocket.



¿Qué es WebSocket y por qué es necesario?



WebSocket es un protocolo que proporciona una comunicación full-duplex (bidireccional) entre el cliente y el servidor a través de una única conexión TCP persistente. A diferencia de HTTP, donde el cliente siempre inicia la solicitud, WebSocket permite que el servidor envíe datos al cliente en cualquier momento.



Principales ventajas de WebSocket:

  • Baja latencia: Sin gastos generales de establecer una nueva conexión para cada mensaje.
  • Eficiencia: Tráfico de servicio mínimo (solo 2 bytes por mensaje después de establecer la conexión).
  • Conexión persistente: El servidor puede enviar datos en tiempo real sin necesidad de sondeo por parte del cliente.


WebSocket es ideal para:

  • Chats en línea y mensajería instantánea
  • Edición colaborativa de documentos
  • Cotizaciones bursátiles y financieras
  • Juegos multijugador
  • Notificaciones push y monitoreo


Configuración del proyecto Ktor para WebSocket



Antes de escribir código, es necesario configurar el proyecto. La forma más sencilla es hacerlo a través de IntelliJ IDEA con el plugin de Ktor, o manualmente mediante Gradle.



Paso 1: Creación del proyecto

Cree un nuevo proyecto Gradle con Kotlin (JVM). En el archivo build.gradle.kts agregue las siguientes dependencias:



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")}


Paso 2: Estructura básica del servidor

Creemos el archivo Application.kt y escribamos un 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("¡Bienvenido al chat!") for (frame in incoming) { if (frame is Frame.Text) { val text = frame.readText() send("Has escrito: $text") println("Recibido: $text") } } } }.start(wait = true)}


Este código inicia un servidor en el puerto 8080 que acepta conexiones WebSocket en la dirección /chat. Al conectarse, el cliente recibe un mensaje de bienvenida, y luego el servidor responde a cada mensaje de texto con un eco.



Creación de un chat avanzado con salas



Ahora pasemos a un ejemplo más complejo — un chat múltiple

Blogs

Book Recommendations