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: websocketConnection: 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 cifrarwss://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
- Conceptos básicos de WebSocket
- Uso de gorilla/websocket
- Difusión de mensajes
- Gestión de conexiones