El protocolo HTTP fue concebido desde sus orígenes para ofrecer comunicaciones en un sólo sentido, desde el servidor hacia el cliente. Sin embargo las aplicaciones web de hoy en día demandan más que eso para poder ofrecer una experiencia de usuario más rica, necesitan flujo de información en ambos sentidos en el mismo instante en el que ocurren los eventos.

Para mitigar esa necesidad han aparecido varias estrategias, entre ellas long polling y Websocket. En long polling el cliente se mantiene haciendo preguntas al servidor sobre un determinado evento mientras que con Websocket tenemos a nuestra disposición un nuevo protocolo que permite la interacción entre el cliente y el servidor, facilitando la transmisión de datos en tiempo real en ambas direcciones. Es aquí donde entra Socket.io.

¿Qué es Socket.io?

Socket.io es una librería en JavaScript para Node.js que permite una comunicación bidireccional en tiempo real entre cliente y servidor. Para ello se basa principalmente en Websocket pero también puede usar otras alternativas como sockets de Adobe Flash, JSONP polling o long polling en AJAX, seleccionando la mejor alternativa para el cliente justo en tiempo de ejecución.

Instalarlo es tan sencillo como ejecutar un comando de npm:

$ npm install socket.io


Y para entender cómo funciona puedes revisar el tutorial de cómo construir un chat en tiempo real que tienen en su página oficial, es sencillo y no requiere casi ningún conocimiento de Node.js por lo que cualquier persona con un manejo intermedio de JavaScript puede seguirlo.

Es importante resaltar que las aplicaciones hechas en Socket.io tiene una desventaja y es que no soportan interacciones con otros clientes que usen Websocket estándar. Esto se debe a que Socket.io no es una implementación del protocolo Websocket sino una librería de comunicación web en tiempo real que utiliza varios protocolos. Sin embargo, eso no le quita que sea muy poderosa y fácil de usar, ideal para cualquier proyecto en el que tanto el cliente como el servidor puedan usar la misma librería.

Para información más detallada puedes ver la documentación oficial y por ser un proyecto Open Source puedes hurgar su código fuente en Github. También puedes mantenerte al día suscribiéndote a su lista de correos o siguiéndolos en Twitter.