0Pricing
WebSockets & Realtime Systems Programming · Lección

Subprotocolos, extensiones y compresión

Profundice en el protocolo WebSocket negociando subprotocolos de aplicación y habilitando extensiones como la compresión por mensaje.

Subprotocolos, extensiones y compresión es una lección gratuita de WebSockets & Realtime Systems Programming en CoddyKit. Esta es la lección 4 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 WebSockets & Realtime Systems Programming, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de WebSockets & Realtime Systems Programming incluye 4 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Beyond the Basics

The raw WebSocket protocol only moves bytes. Two negotiation mechanisms let you layer meaning and efficiency on top: subprotocols and extensions.

What Is a Subprotocol

A subprotocol is an agreed application-level message format, like a contract for what the bytes mean. Examples include wamp, mqtt, and graphql-ws.

Requesting a Subprotocol

The client lists desired subprotocols in a handshake header.

Sec-WebSocket-Protocol: graphql-ws, json

Server Selection

The server picks one subprotocol it supports and echoes it back. If none match, it omits the header and only the base protocol applies.

Sec-WebSocket-Protocol: graphql-ws

Subprotocols in the Browser

Pass an array of subprotocol names as the second argument when opening the socket.

const ws = new WebSocket('wss://api.example.com', ['graphql-ws', 'json']);
console.log(ws.protocol); // the one the server chose

What Is an Extension

An extension changes how frames are transmitted at the protocol level, transparent to your application logic. The most common is per-message compression.

Negotiating Extensions

Extensions are negotiated in the handshake too, via their own header.

Sec-WebSocket-Extensions: permessage-deflate

Per-Message Deflate

permessage-deflate compresses each message with DEFLATE before sending. It cuts bandwidth for text-heavy payloads at the cost of CPU.

When Compression Helps

Compression wins for large, repetitive JSON or text. For tiny or already-compressed payloads (images, binary), it adds overhead without benefit and can be disabled.

Subprotocol vs Extension

Keep them straight:

  • Subprotocol: meaning of the messages (application layer)
  • Extension: how frames are transported (protocol layer)

Practical Notes

Both are negotiated only during the handshake and cannot change afterward. Always verify ws.protocol client-side so your code parses messages with the agreed format.

Quick Check

Test your protocol knowledge.

Recap

You explored advanced WebSocket negotiation:

  • Subprotocols agree on message format via Sec-WebSocket-Protocol
  • Extensions change frame transport via Sec-WebSocket-Extensions
  • permessage-deflate compresses text payloads
  • Both are fixed at handshake time

You now understand the negotiation layer of WebSockets.

Preguntas frecuentes

¿La lección «Subprotocolos, extensiones y compresión» es gratis?

Sí — el texto completo de «Subprotocolos, extensiones y compresión» 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 WebSockets & Realtime Systems Programming, actualiza a CoddyKit PRO. El curso de WebSockets & Realtime Systems Programming incluye 4 lecciones en total.

¿Qué aprenderé en «Subprotocolos, extensiones y compresión»?

Profundice en el protocolo WebSocket negociando subprotocolos de aplicación y habilitando extensiones como la compresión por mensaje. Practicas WebSockets & Realtime Systems Programming 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 WebSockets & Realtime Systems Programming?

No se requiere experiencia previa. WebSockets & Realtime Systems Programming 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 4 de 4.

¿Cuánto tiempo toma la lección «Subprotocolos, extensiones y compresión»?

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 WebSockets & Realtime Systems Programming?

Sí. Cada lección de WebSockets & Realtime Systems Programming 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. El handshake de WebSocket explicado
  2. Tramas y mensajes de datos de WebSocket
  3. Ciclo de vida y estados de una conexión
  4. Subprotocolos, extensiones y compresión
← Volver a WebSockets & Realtime Systems Programming