WebSocket

Experimental

Esta es una tecnolog铆a experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producci贸n.

 
El objeto WebSocket provee la API para la creaci贸n y administraci贸n de una conexi贸n WebSocket a un servidor, as铆 como tambi茅n para enviar y recibir datos en la conexi贸n.
 
El constructor de WebSocket acepta un par谩metro requerido y otro opcional.

 

WebSocket WebSocket(
  in DOMString url,
  in optional DOMString protocols
);

WebSocket WebSocket(
  in DOMString url,
  in optional DOMString[] protocols
);

 

url
La URL a la cual se conecta, debe ser la URL con la cual el servidor WebSocket debe responder.
protocols Optional
Permite cualquier caso, desde un simple protocolo o un arreglo de cadenas de texto. Estas cadenas de texto son usadas para indicar subprotocolos, en los cuales un 煤nico servidor puede implementar m煤ltiples subprotocolos para el WebSocket (por ejemplo, tu podr铆as esperar que un servido gestione diferentes tipos de interacciones dependiendo de un tipo espec铆fico de protocolo). Si no especificas un subprotocolo, se asume una cadena de texto vac铆a.
 

El constructor puede levantar excepciones:

SECURITY_ERR
El puerto en el cual la conexi贸n se realiza se encuentra bloqueado.

Revisi贸n de M茅todos

void close(in optional unsigned long code, in optional DOMString reason);
void send(in DOMString data);

Atributos

Atributo Tipo Descricci贸n
binaryType DOMString

Una cadena de texto indicando el tipo de dato binario que es transmitido por la conexi贸n. Debe ser de cualquier manera "blob" si es se unas objetos DOM Blob  o bien "arraybuffer" ArrayBuffer si se usan otro tipo de objetos

bufferedAmount unsigned long

La cantidad de bytes de data que pueden ser almacenadas en cola utilizando llamadas a send() pero que a煤n no se han transmitido a la red. Este valor se reestablece a cero una vez que toda la informaci贸n ha sido enviada. Este valor no vuelve a cero cuando la conexi贸n es cerrada; si mantientes llamando send(), continuar谩 acumulandose. Solo de lectura.

extensions DOMString

Las extensiones seleccionadas por el servidor. Esto solamente puede ser un string vac铆o o bien una lista de extensiones que es negociada por la conexi贸n.

onclose EventListener

Un monitor de eventos que atiende una llamada cuando la conexi贸n del WebSocket cambia a un estado CERRADO (CLOSED). El monitor recibe un CloseEvent llamado "cerrado".

onerror EventListener

Un monitor de eventos que es llamado cuando un error ocurre. Esto es un evento simple llamado "error"

onmessage EventListener

Un monitor de eventos que es llamado cuando un mensaje es recibido desde un servidor. El monitor recibe un objeto MessageEvent llamado "mensaje".

onopen EventListener Un monitor de eventos que es llamado cuando el estado readyState de la conexi贸n Websocket cambia a OPEN. Esto indica que la conexi贸n est谩 lista para enviar y recibir datos. El evento es uno simple con el nombre "open".
protocol DOMString Una cadena indicando el nombre del sub-protocolo que el servidor ha seleccionado. Este puede ser una de las cadenas especificadas en el par谩metro protocols cuando se ha creado el objeto Websocket.
readyState unsigned short El estado actual de la conexi贸n. Este es uno de Ready state constants. Solo lectura.
url DOMString La URL como la resuelve el constructor. Esto siempre es una URL absoluta. Solo lectura.

Constantes

Ready state constants

Estas constantes son usadas por el atributo readyState para describir el estado de la conexi贸n WebSocket.

Constante Valor Descripci贸n
CONNECTING 0 La conexi贸n no est谩 a煤n abierta.
OPEN 1 La conexi贸n est谩 abierta y lista para comunicar.
CLOSING 2 La conexi贸n est谩 siendo cerrada.
CLOSED 3 La conexi贸n est谩 cerrada o no puede ser abierta.

M茅todos

close()

Cierra la conexi贸n o intento de conexi贸n del WebSocket si lo hay. Si la conexi贸n ya est谩 cerrada, no hace nada.

void close(
  in optional unsigned short code,
  in optional DOMString reason
);

Par谩metros

code Optional
Un valor num茅rico indicando el c贸digo de estado que explica porqu茅 la conexi贸n est谩 siendo cerrada. Si no se especifica este par谩metro, se asume un valor por defecto de 1000 (que indica un cierre normal por "transacci贸n completa") . Ver c贸digos de estado en la p谩gina de CloseEvent para la lista de valores permitidos.
reason Optional
Una cadena legible explicando porqu茅 la conexi贸n est谩 siendo cerrada. Esta cadena no puede ser mayor que 123 bytes de texto UTF-8 (no caracteres)

Exceptions thrown

INVALID_ACCESS_ERR
Se ha especificado un c贸digo err贸neo.
SYNTAX_ERR
La reason cadena es demasiado larga o continene caracteres no validos.

Note: En Gecko, este m茅tido no soporta ningun par谩metro antes de Gecko 8.0 (Firefox 8.0 / Thunderbird 8.0 / SeaMonkey 2.5).

send()

Transmite datos al servidor sobre la conexi贸n WebSocket.

void send(
  in DOMString data
);

void send(
  in ArrayBuffer data
);

void send(
  in Blob data
);

Parametros

data
Una cadena de texto que enviar al servidor.

Excepciones

INVALID_STATE_ERR
La conexi贸n no est谩 abierta en este momento.
SYNTAX_ERR
La data tiene caracteres no v谩lidos que no se pueden decodificar.

Note: La implementaci贸n del m茅todo send() en el  motor de renderizado Gecko puede cambiar de la especificaci贸n en Gecko 6.0; Gecko devuelve un boolean indicando si la conexi贸n esta todav铆a abierta (y, por extensi贸n, que los datos son encolados o trasmitidos satisfactoriamente). Esto ha sido corregido en Gecko 8.0.

A partir de Gecko 11.0, implementa ArrayBuffer pero no tipos de datos Blob.

Ejemplo

// Crea una nueva conexi贸n.
const socket = new WebSocket('ws://localhost:8080');

// Abre la conexi贸n
socket.addEventListener('open', function (event) {
    socket.send('Hello Server!');
});

// Escucha por mensajes
socket.addEventListener('message', function (event) {
    console.log('Message from server', event.data);
});

Especificaciones

Specification Status Comment
Unknown
La definici贸n de 'WebSocket' en esta especificaci贸n.
Unknown Definici贸n inicial

Compatibilidad de navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support (Yes) (Yes) 4.0 (2.0)[1] (Yes) (Yes) (Yes)
Sub-protocol support ? ? 6.0 (6.0) ? ? ?
Feature Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support ? (Yes) 7.0 (7.0)[1] ? ? (Yes)
Sub-protocol support ? ? 7.0 (7.0) ? ? ?

[1] Starting in Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), the constructor is prefixed; you will need to use MozWebSocket(): var mySocket = new MozWebSocket("http://www.example.com/socketserver");

The extensions attribute was not supported in Gecko until Gecko 8.0.

Prior to Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8), outbound messages sent using the send() method were limited to 16 MB. They can now be up to 2 GB in size.

Referencias adicionales