0Pricing
Go Academy · Lección

Conceptos básicos de WebSocket

Comunicación bidireccional en tiempo real

Conceptos básicos de WebSocket es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Comunicación bidireccional en tiempo real

HTTP sigue el modelo de solicitud-respuesta: el cliente pregunta, el servidor responde y la conexión (lógicamente) termina. Para chats, paneles en tiempo real y juegos necesita un canal persistente y bidireccional. Eso es lo que proporcionan los WebSockets.

El handshake de actualización

Una conexión WebSocket comienza como una solicitud HTTP normal con cabeceras especiales:

  • Upgrade: websocket
  • Connection: Upgrade

El servidor responde 101 Switching Protocols y el socket TCP se reutiliza para tramas dúplex completas.

Por qué no basta con hacer polling

Antes de los WebSockets, las aplicaciones usaban polling (solicitudes repetidas) o long-polling. Ambos desperdician ancho de banda y añaden latencia. Los WebSockets mantienen una única conexión abierta, por lo que cualquiera de los dos extremos puede enviar datos al instante.

Tramas, no solicitudes

Una vez completada la actualización, los datos viajan como tramas ligeras en lugar de mensajes HTTP. Las tramas pueden ser de texto o binarias, y existen tramas de control para ping/pong y cierre.

Dúplex completo

A diferencia de HTTP, ambos extremos pueden enviar datos en cualquier momento sin esperar una respuesta. Un servidor puede enviar una notificación en cuanto cambia algo y el cliente puede enviar datos de entrada simultáneamente.

ws frente a wss

Al igual que http/https, los WebSockets tienen dos esquemas:

  • ws:// sin cifrar
  • wss:// mediante TLS (úselo en producción)

Compatibilidad con la biblioteca estándar

La biblioteca estándar de Go no incluye una implementación de WebSocket únicamente en net/http. La comunidad utiliza github.com/gorilla/websocket o nhooyr.io/websocket. En la siguiente lección veremos gorilla.

import "github.com/gorilla/websocket"

Un modelo mental

Imagine un WebSocket como una llamada telefónica:

  • Marcar = el handshake de actualización HTTP
  • La línea abierta = la conexión persistente
  • Hablar en ambas direcciones = tramas de dúplex completo
  • Colgar = la trama de cierre

Tipos de mensajes

Hay dos tipos de tramas de datos especialmente importantes:

  • Texto: contienen UTF-8 (a menudo JSON)
  • Binarias: contienen bytes sin procesar (protobuf, imágenes)

Las tramas de control (ping, pong, close) gestionan la propia conexión.

Dónde destacan los WebSocket

Son ideales para:

  • Chat y presencia
  • Trading en directo o marcadores deportivos
  • Edición colaborativa
  • Estado de juegos multijugador

Para enviar datos únicamente del servidor al cliente, Server-Sent Events puede ser una opción más sencilla.

Ejecutable: una analogía de las tramas

El código de WebSocket necesita una biblioteca externa, así que aquí tiene una analogía con la biblioteca estándar: una función que clasifica un mensaje como texto o binario para ilustrar los tipos de tramas.

package main

import (
    "fmt"
    "unicode/utf8"
)

func frameType(data []byte) string {
    if utf8.Valid(data) {
        return "text"
    }
    return "binary"
}

func main() {
    fmt.Println(frameType([]byte("hello")))
    fmt.Println(frameType([]byte{0xff, 0x00, 0x01}))
}

Comprobación rápida

Compruebe su comprensión de los conceptos básicos de WebSocket.

Resumen

Ha aprendido los fundamentos de WebSocket:

  • Proporcionan comunicación persistente y de dúplex completo
  • Comienzan con un handshake de actualización HTTP (respuesta 101)
  • Los datos fluyen en tramas de texto o binarias; las tramas de control gestionan el enlace
  • Utilice wss:// en producción; Go depende de bibliotecas como gorilla/websocket

Preguntas frecuentes

¿La lección «Conceptos básicos de WebSocket» es gratis?

Sí — el texto completo de «Conceptos básicos de WebSocket» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Conceptos básicos de WebSocket»?

Comunicación bidireccional en tiempo real Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Conceptos básicos de WebSocket»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Conceptos básicos de WebSocket
  2. Uso de gorilla/websocket
  3. Difusión de mensajes
  4. Gestión de conexiones
← Volver a Go Academy