101

Switching Protocols

El código que cambia de idioma sobre la marcha. Como un intérprete que decide hablar en chino en medio de una conversación en español.

ℹ️ Código Informativo

📋 ¿Qué narices es esto?

El código 101 Switching Protocols es como ese amigo políglota que cambia de idioma según la situación. El servidor básicamente te dice: "Vale, entiendo que quieres hablar en otro protocolo, vamos a cambiar". Es elegante, civilizado y bastante útil. A diferencia de los errores que todos conocemos, el 101 es un código informativo de éxito.

Este código es el diplomático de HTTP. Aparece cuando cliente y servidor se ponen de acuerdo para cambiar de protocolo sobre la marcha. Como cuando dos personas empiezan hablando en inglés y luego se dan cuenta de que ambos hablan español. Es pura cortesía digital.

El 101 aparece típicamente cuando:

  • Se establece una conexión WebSocket
  • Se actualiza de HTTP/1.1 a HTTP/2
  • Se cambia a un protocolo personalizado
  • Se negocia un protocolo más eficiente
  • Se establece comunicación bidireccional en tiempo real

🎯 Dato curioso

El 101 es como el traductor simultáneo de internet. Una vez que se produce el cambio, toda la conversación posterior usa el nuevo protocolo. Es un cambio permanente para esa conexión, no temporal.

La gracia del 101 es que es completamente transparente para el usuario final. Mientras navegas, tu browser y el servidor pueden estar haciendo este baile de protocolos sin que te enteres. Es como tener un mayordomo digital que optimiza tu conexión automáticamente. Solo los desarrolladores necesitan preocuparse por implementarlo correctamente.

🔧 Cómo manejar esto

🖥️ Para servidores (generar 101s correctos)

  1. Valida headers de upgrade: Verifica Connection: Upgrade y protocolo solicitado.
  2. Responde 101 + headers correctos: Confirma el cambio de protocolo.
  3. Implementa el nuevo protocolo: Cambia inmediatamente tras enviar 101.
  4. Maneja errores gracefully: Si no puedes cambiar, devuelve 426 o 400.
  5. Testea compatibilidad: Algunos proxies bloquean protocol switching.

📱 Para desarrolladores frontend

  1. Usa librerías probadas: WebSocket APIs nativas o Socket.io.
  2. Maneja fallos de conexión: Fallback a HTTP normal si 101 falla.
  3. Implementa reconexión: Conexiones WebSocket pueden caerse.
  4. Monitorea estado de conexión: Usa heartbeat/ping-pong.
  5. Testea en diferentes redes: Algunos firewalls bloquean WebSockets.

Problemas típicos con 101

  • Headers mal formados:
    Connection: keep-alive en lugar de Upgrade
    El servidor no entiende que quieres cambiar protocolo
  • Proxies intermedios:
    502 Bad Gateway en lugar de 101
    El proxy no soporta protocol switching
  • Protocolo no implementado:
    Upgrade: websocket pero servidor no soporta WebSockets
    Devuelve 426 Upgrade Required o 501 Not Implemented

🚀 Respuesta rápida para emergencias

🔥 Si tu WebSocket no funciona:
1. Verifica que el servidor devuelve 101, no 200 o error
2. Revisa headers: Connection: Upgrade, Upgrade: websocket
3. Usa wss:// en producción, ws:// solo en desarrollo
🎯 Truco ninja:
Si ves 101 en DevTools pero la conexión falla, es probable que un proxy intermedio esté bloqueando WebSockets. Prueba con polling como fallback.