WebSockets es una tecnología que está surgiendo de la mano de HTML5 y estará pronto disponible en todos nuestros browsers en poco tiempo. Pero que son los WebSockets ? WebSockets es una tecnología que nos da canales de comunicación bidireccional, full-duplex a través de un sencillo socket TCP. Traducido ésto a nuestro ámbito más cotidiano, es simplemente server push. Vamos a poder comunicarnos real-time con nuestros clientes conectados cosas que trataba de emular la tecnica Comet la cual hacía vivir un request http durante X tiempo y donde el server escribia en ese response emulando ser un push.

Hoy no son muchas las versiones estables de browsers que lo soportan. No es el caso de Google Chrome el cual viene con soporte para WebSockets desde su versión 4.

  • Google Chrome 4 +
  • Internet Explorer 9 beta +
  • Firefox 4 beta +
  • Safari 5 +
  • Opera 10.70 +

Ahora veamos un poco de código. Lo primero que tenemos que saber es si el browser conectado soporta WebSockets, lo cual podemos comprobarlo de manera sencilla.

var support = window.WebSocket != null;

Ahora que sabemos que nuestro browser soporta WebSockets podemos empezar creando uno.

var socket = new WebSocket("/mysocket");

Una vez creado el objeto WebSocket vamos a agregarle una serie de listeners para poder manipular los eventos que ocurran en el mismo.

socket.onopen = function(e) {
  alert("Socket is connected");
};

socket.onclose = function(e) {
  alert("Socket is closed :(");
}

// y finalmente el que mas nos interesa, el push del server
socket.onmessage = function(e) {
  alert("Server sent a message: " + e.data);
}

Sin dudas que el evento más importante aca es el onmessage. El parámetro e.data puede ser texto plano, json, xml o cualquier formato que estén acostumbrados a utilizar a diario.

Ahora vamos a ver un ejemplo de cuando el cliente quiere comunicarse con el server enviándole un sencillo mensaje.

socket.send("data goes here");

De ésta manera podemos tener una comunicación bidireccional de manera sencilla.

Ahora veamos algunos escenarios donde aplica la utilización de WebSockets

  • Es aplicacble donde un servicio TCP debe ser llevado a una arquitectura web (como por ejemplo el servicio de mensajeria XMPP)
  • Donde una aplicación web necesita comunicar datos en real-time a sus clientes (por ejemplo una aplicación de stocks online)

WebSockets es un avance significativo para la web donde las aplicaciones en browsers se parecen cada vez más a las de escritorio pero a su vez hiper conectadas entre sí.

Algunos recursos para leer