【问题标题】:How to use backbone.js with websockets/socket-io/nowjs如何将backbone.js 与websockets/socket-io/nowjs 一起使用
【发布时间】:2011-10-03 05:34:05
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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

      【讨论】:

      【解决方案3】:

      更好的方法是使用事件聚合器的事件驱动架构。以下是 Derick Bailey 的文章 => Decoupling Backbone Apps From WebSockets

      它使东西保持高度解耦,使测试和更改 websockets 库变得更容易,最重要的是,它不会像 sync() 那样覆盖 Backbone 的内部结构

      【讨论】:

        【解决方案4】:

        【讨论】:

          猜你喜欢
          • 2020-10-11
          • 2016-09-20
          • 2012-12-21
          • 1970-01-01
          • 1970-01-01
          • 2011-09-06
          • 2016-03-01
          • 1970-01-01
          • 2012-04-02
          相关资源
          最近更新 更多