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.
Consulte backbone.iobind: https://github.com/noveogroup/backbone.iobind
Sobrescribe Backbone.sync
por ti.
Tal vez este tuto excelente te ayude: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node
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.