我正在开发一个将使用网络套接字的单页Backbone应用程序。该应用程序相当复杂,有6个或更多主要区域(屏幕)。
Web套接字的语法看起来很简单,我现在想知道架构。
使用网络套接字时,采用第一种方法或第二种方法是否最佳?
1 :在应用程序的任何屏幕或区域上为所有实时服务器通信打开一个websocket,然后在客户端过滤这些消息?
...或
2 :一次打开多个websockets,其中每个Web套接字代表应用程序中的某些功能区域
(我看过这个页面,但它是关于服务器端的,我对客户端感兴趣:What is the best practice for WebSocket server(s)?)
更新:服务器正在使用Jetty(一种与Tomcat不同的Java技术)。
答案 0 :(得分:2)
我只打开一个连接,更容易管理。为了简化调试,您可以使用区域名称命名所有事件。 socket.io也支持名称空间,请参阅http://socket.io/#how-to-use中的“将自己限制在名称空间”部分。
此外,如果您与websocket进行大量通信,可以使用Visibility API将其关闭,例如:https://developer.mozilla.org/en-US/docs/DOM/Using_the_Page_Visibility_API
答案 1 :(得分:1)
不是你问题的直接答案,但是,既然你说你在客户端上使用骨干,并假设你在服务器上使用节点(如果没有,这可能是一个令人信服的理由),你可能对this article感兴趣,{{3}}详细讨论了客户端和(节点)服务器之间共享模型数据以同步状态。如果您不知道,Backbone可以作为模块安装在节点中。
由于您所描述的应用程序非常复杂,因此您可能会直接在客户端和服务器之间共享相同的复杂模型。