如何将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 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

将服务器端 MVC 与 Backbone.js 相结合

Backbone.js 和 DOM 操作

Backbone.js 如何与 PHP 一起使用

在 Apache 或 IIS 中托管时将 Backbone.js 与 CouchDB 连接

如何安全地将 Backbone.js 应用程序连接到数据库?

Node.js 与 CouchDB 和 Backbone.js 一起使用,如何提供 json?