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

时间:2011-07-11 23:36:05

标签: javascript node.js backbone.js socket.io nowjs-sockets

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

我认为最好的方法是覆盖同步方法,但一些简单的建议是真的欢迎。

4 个答案:

答案 0 :(得分:27)

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

此解决方案的有趣部分是建立主 - 主关系。您需要确保对于任何客户端,他们只能“更新”服务器上具有“所有权”的模型状态,以避免黑客和服务器端状态损坏。

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

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

每当更新服务器上的模型时,您只需推送到在S中具有该模型的任何客户端(如果模型在M中用于多个客户端,则推送到M中具有该模型的任何客户端)。

很多想法需要进入控制/权限和所有权,一旦客户端POST / PUT / DELETE某些数据,通常由MVC控制器处理。

答案 1 :(得分:11)

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

它会为您覆盖Backbone.sync

答案 2 :(得分:8)

更好的方法是使用事件聚合器的事件驱动架构。关于这个主题的精彩读物是以下Derick Bailey的文章=> Decoupling Backbone Apps From WebSockets

它保持了高度分离的东西,使得更容易测试和更改websockets lib,并且最重要的是,它不会破坏覆盖Backbone的内部结构,如sync()

答案 3 :(得分:6)