Bienvenidos sean a este post, hoy veremos una introduccion a esta libreria.
Antes de comenzar debemos mencionar como nacio el paradigma de los servicios web, este no es otro que el concepto de Mainframe de IBM porque si lo analizan el concepto es el mismo, donde nuestros navegadores son las terminales y solo muestran lo devuelto por el servidor, hasta la llegada de Javascript que rompio este paradigma porque agrego la posibilidad de poder interactuar desde el lado del navegador, a este nuevo concepto se lo denomina como navegador en tiempo-real.
Con esto comentado entra en accion Socket.IO y este apunta principalmente a poder crear aplicaciones en tiempo-real para cualquier navegador y dispositivo movil, otro detalle es que soporta muchos protocoles de transporte y este elige el mas apropiado.
Cuando nos referimos a tiempo-real, en realidad no es tan asi ya que actualmente el verdadero significado de tiempo-real involucra al SW con limitaciones de tiempo estrictas que deben responder a eventos en restricciones especificas de tiempo, lo mas usual es utilizarlo en sistemas integrados para responder a las acciones de botones, siendo que estos pueden ir desde sistemas encargados de dispensar comida hasta dispositivos medicos en unidades de cuidados intensivos, si comemos mucho podemos terminar en una unidad de cuidados intensivos y en ambos casos estaremos trabajando con aplicaciones en tiempo-real.
Pero que significa que Socket.IO adopta el mejor protocolo de transporte? Si nosotros implementamos unicamente a WebSocket, este quedara solo restringuido a los navegadores modernos, pero este tambien soporta a protocolos alternativos tales como:
- Flash
- XHR
- JSONP
Lo cual nos permitira soportar una mayor cantidad de navegadores, pero como autor de la aplicacion no debes preocuparte por el protocolo que se usara con el navegador, simplemente piensa en el programa y la libreria se encargara del resto, ya que el paquete Socket.IO incluye tanto un paquete del lado del servidor como una libreria del cliente.
Despues de una configuracion simple ambos se comunicaran sobre un socket, a su vez la API tanto del servidor como del cliente son muy similares porque una aplicacion de Socket.IO corre codigo tanto en el navegador como en el servidor, siendo que el modelo de Socket.IO es muy similar al objeto EventEmitter.
Esto es asi porque cuando trabajamos con nuestros codigos con este objeto para escuchar los eventos usamos al metodo .on, y al metodo ..emit para enviar este metodo pero en Socket.IO cuando se envia un evento no es solamente con el nombre sino que tambien se utiliza una combinacion de dos espacios mantenidos por Socket.IO (el namespace y el room), a su vez los eventos son enviados entre el navegador y el servidor en lugar de limitarse solamente al proceso de node.js.
Comentemos un poco sobre esto, ya que en el lado del servidor envolveremos al objeto HTTP Server mediante la libreria Socket.IO, lo cual creara el objeto Socket.IO server, este objeto nos permite crear dos tipos de espacios de comunicaciones, namespaces y rooms, con los cuales podremos enviar mensajes, mediante el metodo emit, ya sea globalmente o uno de los espacios antes citados, y podemos escuchar los mensajes tambien, en este caso mediante on y al igual que en el caso anterior puede ser global o en alguno de los espacios.
Mientras tanto en el lado del cliente cargamos la libreria desde el servidor de Socket.IO, esto hara que el navegador abra uno o mas canales de comunicacion al servidor, permitiendo que el cliente se conecte a los namespaces o rooms, esto solamente fue un vistazo muy superficial de como es y trabaja esta libreria, esto nos servira principalmente para implementar esta libreria en nuestra aplicacion Notas pero sobre esto comenzaremos a partir del proximo post.
En resumen, hoy hemos visto la teoria sobre Socket.IO, algunos conceptos sobre los navegadores, asi como despues hemos visto como trabaja la libreria, asi como otros detalles que nos seran de utilidad mas adelante, espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donación
Es para mantenimento del sitio, gracias!
$1.50
