如何通过websockets / socket-io / nowjs使用backbone.js

我刚刚进入backbone.js,我发现进度有点慢。 我的主要问题是如何保持我的客户端和服务器端模型同步使用socket-io(技术上我使用now.js,但同一个主体应该适用)。

我认为最好的方法是重写同步方法,但一些简单的build议将非常受欢迎。

简单地覆盖Backbone.sync以便它向socket.io发送消息,并通知服务器上相关的backbonejs模型改变状态。

这个解决scheme有趣的部分是build立主 – 主关系。 您需要确保对于任何客户端,他们只能“更新”服务器上“拥有”模型的​​状态,以避免黑客和服务器端的状态损坏。

因此,对于每个客户端,他们都有一个集合M,其中客户端是M中所有模型的主人,并且具有集合S,其中客户端具有S中所有模型的从属。

它只能强制在M中的模型的服务器上更新,并且只有一个客户端应该在M中具有特定的模型(或者需要实现可靠的locking/合并实现)。

无论何时更新服务器上的模型,只需向S中具有该模型的任何客户端推送(如果模型对于多个客户端,则推送给M中具有该模型的任何客户端)。

一旦客户端POST / PUT / DELETE一些数据,通常需要MVC控制器处理的控制权限和所有权。

查看backbone.iobind: https : //github.com/noveogroup/backbone.iobind

它会替代Backbone.sync

一个更好的方法是使用事件聚合器的事件驱动架构。 关于这个主题的大量阅读是以下Derick Bailey的文章=> 从WebSockets解耦Backbone应用程序

它使得东西高度分离,使testing变得更简单,并且改变了websocket库,而且最重要的是,它不会混淆重写Backbone的内部函数,如sync()

也许这个优秀的tuto会帮助你: https ://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node