lunes, 27 de mayo de 2013

Nuevo Chat Social.

VirtualNet 2.0, cuenta con varios mecanismo de comunicación, siendo uno de los más importantes el chat, el sistema cuenta con dos tipos de chat's como son:


  1. Chat Social.
  2. Chat Académico.

La presente entrada tiene como fin mostrar la actualización del chat Social.



Opciones Nuevo Chat Social



  • Conversación pública: Permite que todos los usuarios que hagan parte de un curso puedan conversar entre ellos.
  • Conversación Privada: Le da la posibilidad que un usuario entable una conversación con otro usuario, teniendo opciones como:
  • Vídeo Llamada: Permite que los usuarios inicien una conversación a través de vídeo, siguiendo los siguientes pasos:

Seleccionar el botón Vídeo Llamada: al realizar este proceso, se solicitará al usuario que le permita al sitio hacer uso de la webCam y micrófono.



Una vez aceptado los medios, se le enviará la notificación de llamada al usuario, éste deberá realizar le mismo proceso de aceptar los medios, una vez realizada la acción podrán iniciar su conversación en vídeo.


Solicitud de llamada.






El usuario tendrá la capacidad de mostrar la vídeo llamada en pantalla completa, evitando las distracciones de las demás conversaciones.



Si llegase otro usuario a llamar a un usuario que está en la vídeo llamada se le notificará que éste se encuentra ocupado.

La llamada terminará una vez el usuario presione el botón "Finalizar Llamada" o si se ha cerrado la ventana del Chat.

  • Adjuntar archivos.


El chat da la posibilidad de adjuntar archivos en conversaciones uno a uno (privadas), sólo entre aquellos usuarios que se encuentren en línea, se podrán adjuntar varios archivos para diferentes personas, quedando éstos en una cola de subida, la cual mostrará el progreso de cada archivo, así como el usuario al cual estará destinado.




  • Cambios de estado.



El chat le da la posibilidad al usuario de cambiar su estado en el mismo, encontrando los siguientes:

    • Inactivo: El usuario se mostrará a los demás como inactivo, pero éste tendrá la opción de comunicarse con los usuarios que decida, sin que los demás sepan que se encuentra en línea.
    • Disponible: estado por defecto que índica que el usuario se encuentra habilitado para conversar con otros usuarios.
    • Ocupado: Índica a los demás usuarios que se encuentra ocupado.
    • Ausente: Se encuentra en línea, más no pendiente del chat.
    • Salir del chat: Opción que permite cerrar el chat sin la necesidad de salir del sistema, la diferencia con el estado Inactivo, radica en que el usuario no podrá conversar con lo demás usuarios debido a que ha cerrado el chat.
    • Todos los usuarios: El sistema tiene la capacidad de mostrar a todos los usuarios de un curso, con la finalidad de escribirles mensajes "Offline", una vez el usuario se conecte podrá ver la conversación y continuarla si así lo desea, en el caso que no se deseen ver a todos los usuarios y tan sólo se quiera mostrar a aquellos que están en línea, se deberá des-habilitar está última opción.
  • Notificaciones Nativas.


El sistema cuenta con la opción de notificaciones por medio de audio que le índica al usuario cuando se le ha escrito o llamado, pero esto depende que el usuario se encuentre al tanto del curso, para tal fin se han relacionado las denominadas notificaciones nativas disponibles para navegadores como Google Chrome y Safari (MAC), el usuario podrá ver dicha notificación si no se encuentra en la ventana del curso, es decir, si no tiene el foco de la ventana (Minimizada).

SOPORTE A NAVEGADORES.

Las principales funciones del chat funcionan en todos los navegadores, la opción de vídeo, está restringida para su uso en el navegador Google Chrome, debido a que WebRTC, se encuentra ya de forma nativa en este navegador.

TECNOLOGÍA UTILIZADA


La actualización del chat, no sólo fue de interfaz sino de tecnología, la cual se describe a continuación:

El chat social anteriormente estaba desarrollado en Flash, haciendo uso del servicio RED5, debido a que flash no es desplegados en la mayoría de los dispositivos móviles se ha optado por la actualización del mismo a una teología más acorde a las tendencias actuales.



  • Node.js: Es un entorno de programación en la capa del servidor basado en el lenguaje de programación Javascript, con I/O de datos en una arquitectura orientada a eventos, y basado en el motor Javascript V8. (Fuente: http://es.wikipedia.org/wiki/Node.js


Básicamente Node.js otorga la capacidad de ejecutar Javascript del lado del servidor haciendo uso del motor de Javascript más rápido en la actualidad como es el de Google Chrome, debido a que está basado en eventos, sus operaciones son no bloqueantes, sino que se ejecutan en un flujo constante, una vez se termina el proceso se hace uso de los llamados "Callback"

  • Websockets: Es una tecnología que proporciona un canal de comunicación bidireccional y full-duplex sobre un único socket TCP. Está diseñada para ser implementada en navegadores y servidores web, pero puede utilizarse por cualquier aplicación cliente/servidor. (Fuente: http://es.wikipedia.org/wiki/WebSocket)



Está tecnología proporciona la capacidad de realizar acciones en tiempo real, debido a que se mantiene una comunicación constante entre el cliente y el servidor, debido a que es una tecnología relativamente nueva, el soporte en  navegadores antiguos no es buena, para solucionar este inconveniente existe la librería conocida como Socket.io, la cual permite el uso de websockets en los navegadores que lo soporten o haciendo uso de técnicas como long polling o Flash en los que no, esto garantiza que en todos los navegadores funcione.

  • WebRTC: (Web Real-Time Communication) es una API que está siendo elaborada por la World Wide Web Consortium (W3C) para permitir a las aplicaciones del navegador realizar llamadas de voz, chat de vídeo y uso compartido de archivos P2P sin plugins. (Fuente: http://es.wikipedia.org/wiki/WebRTC)




WebRTC, ha sido implementado en el presente chat, permitiendo comunicaciones uno a uno entre los participantes, haciendo uso de los recursos presentes en el navegador y sin la dependencia de Plugins, para el desarrollo de está opción se ha utilizado la excelente librería conocida como webRTC.io, proyecto el cual permite realizar de forma sencilla los pasos necesarios para entablar una conversación como son:
    • Solicitud de Cámara y microfono - Getusermedia
    • Establecimiento de la comunicación - "Signalling", haciendo uso del protocolo STUN
    • Comunicación de los nodos - Peerconnection
Soporte a navegadores WebRtc.
  • Google Chrome: Existe de forma nativa en la versión estable de éste.
  • Firefox: Disponible en la versión de desarrollo (Aurora).
  • Internet Explorer: Disponible a través de Google Chrome Frame.

WebRTC va más allá de la capacidad de vídeo entre usuarios, el estándar busca la comunicación directa entre los navegadores, para realizar acciones como compartir archivos (datachannel) sin la necesidad de requerir un servidor para tal acción.

Una de las primeras charlas acerca de este estándar se efectuó el Google I/O del año 2012, en el cual se muestran las principales características y posible usos para está tecnología.


En Google I/O del presente año (2013), también se dio a conocer el estado actual del estándar así como las nuevas funcionalidades que éste trae.



WebRTC, ya tiene una grana variedad de aplicaciones realizadas, desde la creación de Chatroulette en está tecnología, hasta la capacidad de dotar a Twitter de la opción de vídeo llamada con la aplicación conocida como twelephone, la cual ha sido una de las que inspiraron el presente chat.


Estas y nuevas tecnologías, están permitiendo que las aplicaciones web sean más robustas y que presenten servicios que antes dependían de grandes infraestructuras tecnológicas y de usos de complementos ajenos al navegador.

Jorge Rubiano.
@ostjh