tutorial socket nodejs node example javascript node.js backbone.js socket.io nowjs

javascript - nodejs - socket.io express



Cómo usar backbone.js con websockets/socket-io/nowjs (4)

Estoy entrando en backbone.js y estoy encontrando un progreso un poco lento. Mi principal problema es encontrar la manera de mantener sincronizados los modelos de mi cliente y servidor utilizando socket-io (técnicamente estoy usando now.js, pero debería aplicarse el mismo principio).

Creo que la mejor manera es anular el método de sincronización, pero algunos consejos simples serían realmente bienvenidos.




Un enfoque mucho mejor es la arquitectura impulsada por eventos utilizando un agregador de eventos. Lectura sobre el tema es el siguiente artículo de Derick Bailey => Desacoplando aplicaciones principales de WebSockets

Mantiene las cosas muy desacopladas, permite realizar pruebas más fácilmente y cambiar las websockets lib, y además de eso, no se equivoca al anular las funciones internas de Backbone, como Sync ()


Simplemente sobrescriba Backbone.sync para que envíe mensajes a socket.io y le indique a los modelos backbonejs relevantes en el servidor que alteren el estado.

La parte interesante de esta solución es establecer la relación maestro-maestro. Debe asegurarse de que para cualquier cliente solo puedan "actualizar" el estado de los modelos en el servidor que tienen "propiedad" para evitar piratas informáticos y la corrupción del estado del servidor.

Entonces, para cada cliente tienen un conjunto M donde ese cliente es el maestro de todos los modelos en M y tiene un conjunto S donde ese cliente tiene esclavos de todos los modelos en S.

Solo puede forzar la actualización en el servidor de modelos en M y solo un cliente debe tener un modelo particular en M (o debe implementar una implementación sólida de bloqueo / fusión).

Cada vez que se actualiza un modelo en el servidor, simplemente se envía a cualquier cliente que tenga ese modelo en S. (y se envía a cualquier cliente que tenga ese modelo en M si el modelo está en M para múltiples clientes).

Se debe pensar mucho en control / permisos y propiedad que normalmente maneja el controlador MVC una vez que un cliente POST / PUT / DELETE algunos datos.