【问题标题】:Should a single-page web application keep one Web Socket connection to the server or several?单页 Web 应用程序应该与服务器保持一个还是多个 Web Socket 连接?
【发布时间】:2012-10-29 01:56:53
【问题描述】:

我正在开发一个将使用 Web 套接字的单页 Backbone 应用程序。该应用程序相当复杂,有 6 个或更多主要区域(屏幕)。

网络套接字的语法似乎很简单,我现在想知道架构。

在使用 Web 套接字时,采用第一种方法还是第二种方法最有效?

1:在应用程序的任何屏幕或区域上为所有实时服务器通信打开一个 websocket,然后在客户端过滤这些消息?

或者...

2:一次打开多个 websocket,其中每个 web socket 代表应用程序中的某些功能区域

(我看过这个页面,但它是关于服务器端的,我对客户端感兴趣:What is the best practice for WebSocket server(s)?

更新:服务器正在使用 Jetty(与 Tomcat 不同的 Java 技术)。

【问题讨论】:

  • 我会使用一个连接,除非您有特定的理由不这样做。一次可以打开的连接数也有限制。

标签: javascript backbone.js websocket


【解决方案1】:

我只会打开一个连接,更容易管理。为了便于调试,您可以使用区域名称命名所有事件。 socket.io 也支持命名空间,请参阅此处http://socket.io/#how-to-use 的“将自己限制在命名空间”部分。

此外,如果您与 websocket 进行大量通信,您可以使用 Visibility API 将其关闭,例如:https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API

【讨论】:

    【解决方案2】:

    不是对您的问题的直接回答,但是,由于您说您在客户端上使用骨干网,并假设您在服务器上使用节点(如果不是,这可能是这样做的一个令人信服的论据),您可能对this article 感兴趣,它详细讨论了客户端和(节点)服务器之间共享模型数据以同步状态。如果您不知道,Backbone 可以作为模块安装在 node.js 中。

    正如您所描述的,由于您的应用程序相当复杂,因此您可能会受益于在客户端和服务器之间直接共享相同复杂模型的能力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      相关资源
      最近更新 更多