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

Java WebSocket应用程序体系结构 让我们考虑使用WebSoCube的应用程序,它可以被分成几个独立的模块。一个最简单的例子是聊天应用程序,其中客户端应用程序可以同时加入/连接到多个聊天室(每个聊天室彼此独立)。在开发此类应用程序时,组织连接的首选方法是什么,java,websocket,Java,Websocket,在客户端为每个聊天室打开新的websocket连接。这样,服务器端就有多个javax.websocket.server.ServerEndpoint实例,每个实例都有不同的url。因此,服务器和客户端应用程序的复杂性都会有所降低,并且可以分为功能(可重用)块。缺点是客户端必须同时保持多个打开的连接。在我的例子中,我们一次最多讨论10个 打开一个websocket连接并将消息多路传输到下面的聊天室,即消息中带有聊天室id的字段。实施起来没什么大不了的,这会让应用程序更复杂一点,但值得吗 首选的方法

在客户端为每个聊天室打开新的websocket连接。这样,服务器端就有多个
javax.websocket.server.ServerEndpoint
实例,每个实例都有不同的url。因此,服务器和客户端应用程序的复杂性都会有所降低,并且可以分为功能(可重用)块。缺点是客户端必须同时保持多个打开的连接。在我的例子中,我们一次最多讨论10个

  • 打开一个websocket连接并将消息多路传输到下面的聊天室,即消息中带有聊天室id的字段。实施起来没什么大不了的,这会让应用程序更复杂一点,但值得吗


  • 首选的方法是什么?

    这通常不容易回答,因为它取决于您的具体设置。然而,以下是我的想法:

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