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

hen*_*ald 24 javascript node.js backbone.js socket.io nowjs-sockets

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

我认为最好的方法是覆盖同步方法,但是一些简单的建议会非常受欢迎.

Ray*_*nos 27

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

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

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

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

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

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


Eva*_*ran 11

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

它覆盖Backbone.sync了你.


zap*_*pan 8

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

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


Sam*_*ley 6

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