Este documento describe LooWID, un proyecto de código abierto creado por Juanjo Meroño para explorar tecnologías web como AngularJS, Express, Node.js, MongoDB, WebRTC y WebSockets. El proyecto comenzó como una colaboración en Sakai y busca permitir comunicación P2P entre usuarios a través de navegadores compatibles. El documento también explica brevemente algunas de las tecnologías utilizadas en la arquitectura básica del proyecto.
2. LooWID
Proyecto OpenSource
Nace de una colaboración en Sakai
Y el interés por la tecnología WebRTC
https://github.com/loowid
https://www.loowid.com/#!/
Proyecto Personal
Inversión en tiempo libre
Un trabajo de un año
3.
4. Hasta aquí la promoción...
Hay vida más allá de Java...
7. Tratando de ordenar las piezas
-> Servidor de aplicaciones JS
-> Base de datos NoSQL JSON
-> Web Framework
-> Motor de renderización AJAX
8. Tratando de ordenar las piezas
-> Gestores de configuración
-> Control de calidad
-> Control de versiones (GitHub)
-> Despliegue y distribución
Bower
9. WebRTC + WebSockets
Permite la comunicación P2P
Chrome, Firefox y Ópera
Funciona en PC/Android
Comunicación Servidor <-> Cliente
12. Y ahora...
Es imposible aprender todo esto en 20 min.
Mucho menos si soy yo el que lo explica.
Lo que sí podemos hacer es:
Intentar hacer una aplicación.
Que use todas esas tecnologías.
Lista para funcionar con un comando.
13. Paso a paso
Instalar nodejs, mongodb, git, mean, grunt,
bower,…
Crear el esqueleto mean…
Añadir un paquete y modificarlo hasta
convertirlo en la app…
Pero eso ya lo he hecho…
Puedo deciros cómo o… mejor
14. Ya lo he hecho
Daros un par de URL’s
https://github.com/juanjmerono/basic
https://github.com/juanjmerono/basic-docker
Y ponerlo en marcha en un PC...
15. Interesante [1]
mean init basic
● package.json -> Dependencias npm
● bower.json -> Dependencias bower
● gruntfile.js -> Configuración de grunt
● jshintrc.js -> Reglas de JSHint
mean package chat
● packages/custom/chat
○ public -> client code
○ server -> server code
16. Interesante [2]
views/routes
● data-ng-xxx -> Directivas Angular
● data-ng-controller -> Controlador que maneja la vista
● #!/angular/path -> views/html
controllers
● $scope -> La clave de angular
services
● rest -> Acceso a datos via rest api
17. Interesante [3]
express
● routes -> Punto de entrada de peticiones rest
● requiresLogin -> Control de acceso a urls
models
● Mongoose -> El equivalente mongo de hibernate
controllers
● routes -> model
18. Interesante [4]
usermedia
● Acceso con javascript a video/audio/screen
webrtc
● PeerConnection -> Un canal entre clientes
● Requiere de otro canal para establecer la llamada
websocket
● Canal de comunicación bidireccional inmediato
● Ideal para usarlo como canal de señalización
19. Interesante [5]
docker
● Facilita el despliegue de entornos
● VM mínima con los servicios que quieres
○ Configurados correctamente
○ Listos para funcionar
○ Images vs Containers (Linux Containers)
http://155.54.67.126:3000/#!/