如何将backbone.js 与websockets/socket-io/nowjs 一起使用
Posted
技术标签:
【中文标题】如何将backbone.js 与websockets/socket-io/nowjs 一起使用【英文标题】:How to use backbone.js with websockets/socket-io/nowjs 【发布时间】:2011-10-03 05:34:05 【问题描述】:我刚刚进入backbone.js,发现进展有点慢。我的主要问题是如何使用 socket-io 使我的客户端和服务器端模型保持同步(技术上我正在使用 now.js,但应该应用相同的主体)。
我认为最好的方法是覆盖同步方法,但真的欢迎一些简单的建议。
【问题讨论】:
【参考方案1】:只需覆盖Backbone.sync
,以便它通过socket.io 发送消息并告诉服务器上的相关backbonejs 模型改变状态。
这个解决方案的有趣部分是建立主主关系。您需要确保对于任何客户端,他们只能“更新”他们拥有“所有权”的服务器上模型的状态,以避免黑客和服务器端状态损坏。
因此,对于每个客户端,他们都有一个集合 M,其中该客户端是 M 中所有模型的主控,并且有一个集合 S,其中该客户端具有 S 中所有模型的从属。
它只能在服务器上强制更新 M 中的模型,并且只有一个客户端应该具有 M 中的特定模型(或者您需要实现可靠的锁定/合并实现)。
每当服务器上的模型更新时,您只需推送到在 S 中具有该模型的任何客户端。(如果模型在 M 中用于多个客户端,则推送到在 M 中具有该模型的任何客户端)。
一旦客户端 POST/PUT/DELETE 一些数据,通常由 MVC 控制器处理的控制/权限和所有权需要考虑很多。
【讨论】:
【参考方案2】:查看backbone.iobind:https://github.com/noveogroup/backbone.iobind
它会为您覆盖 Backbone.sync
。
【讨论】:
正确的链接是https://github.com/noveogroup/backbone.iobind【参考方案3】:更好的方法是使用事件聚合器的事件驱动架构。以下是 Derick Bailey 的文章 => Decoupling Backbone Apps From WebSockets
它使东西保持高度解耦,使测试和更改 websockets 库变得更容易,最重要的是,它不会像 sync() 那样覆盖 Backbone 的内部结构
【讨论】:
【参考方案4】:也许这个优秀的教程会帮助你: https://blog.andyet.com/2011/02/15/re-using-backbonejs-models-on-the-server-with-node
【讨论】:
以上是关于如何将backbone.js 与websockets/socket-io/nowjs 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接