AngularJS y Websockets

Estoy tratando de aprender el tema HTML5 / Node.js / Express / MongoDB / AngularJS / Websocket que parece tener a todos entusiasmados en este momento.

Como un ligero efecto contraproducente, en realidad estoy teniendo dificultades para dibujar líneas sobre lo que realmente hace cada tecnología (especialmente con ejs como motor de plantillas). Javascript y HTML en todas partes!

Particularmente, estoy teniendo problemas para separar los servicios proporcionados por websockets (o algo como socket.io ) y AngularJS . Ambos parecen intentar ofrecer dinamismo sin tener que reenviar una página HTML completa.

¿Son sustitutos el uno del otro? ¿O sirven para propósitos diferentes?

Además, ambas tecnologías parecen moverse hacia aplicaciones web de una sola página que evitan el enrutamiento de Express. ¿Qué se aprovecha entonces de Express cuando se utiliza Websockets / AngularJS? Parece que el enrutamiento tradicional ofrecido por Express se sustituye simplemente por alterar la vista en una sola página en AngularJS

AngularJS es una biblioteca de javascript que hace muchas cosas diferentes. Una de las muchas cosas que están más relacionadas con WebSockets es la capa que se encuentra en la parte superior de la función de Javascript de vainilla XmlHttpRequest.

Tanto XmlHttpRequest como WebSockets son técnicas para intercambiar datos con un servidor sin tener que volver a cargar el sitio web. La diferencia es que XmlHttpRequest (a menudo denominado AJAX) sigue un modelo de solicitud-respuesta (el cliente realiza una solicitud, el servidor responde), mientras que WebSockets usa un canal bidireccional donde el cliente y el servidor pueden enviar mensajes en cualquier momento.

Express.js puede hacer mucho, pero su velocidad como servidor web node.js es el mejor beneficio para mí aquí.

Cuando hago una aplicación Angular (generalmente comstackción con Yeoman ), primero instalo una aplicación Express y ejecuto el generador angular de Yeoman, luego edito app.js para eliminar las referencias de vista / enrutamiento y para mostrar la carpeta / dist que yeoman crea después de Grunt Prueba y minimiza todo.

De esta manera, puedo usar Angular como un MVC completo , incluido el enrutamiento. No he usado websockets con esta configuración, aunque tal vez me gustaría para comunicaciones de base de datos (MongoDB o cualquier otra) y / o indexación de datos, especialmente útil para bases de datos no relacionales.