java – WebSocket应用程序架构

让我们考虑使用WebSockets的应用程序,它可以分成几个独立的模块.最简单的示例是聊天应用程序,其中客户端应用程序可以一次加入/连接到多个聊天室(每个聊天室彼此独立).在开发此类应用程序时,组织连接的首选方法是什么

>在每个聊天室的客户端中打开新的websocket连接.这样,服务器端就会有多个javax.websocket.server.ServerEndpoint实例,每个实例都有不同的url.因此,服务器和客户端应用程序将稍微复杂一些,并且可以分成功能(可重用)块.缺点是客户端必须同时保持多个打开的连接.在我的情况下,我们一次谈论最多十个.
>打开一个websocket连接并将消息多路复用到下面的聊天室,即消息中包含聊天室ID的字段.实施起来并不是什么大不了的事,会让应用程序变得更复杂,但它值得吗?

什么是首选方法?

最佳答案 这通常不容易回答,因为它取决于您的具体设置.但是,这是我对此的想法:

我认为选项2是更好的方法,因为对于许多Web服务器来说,开放连接实际上是一种有限的资源.请记住,websocket连接与常规http请求不同,并且长时间保持打开状态.我认为多路复用协议的额外复杂性确实不是问题.我所知道的websocket通信协议的所有实现都使用后一种方法,尽管我必须承认不知道很多例子.

点赞