让我们考虑一下使用WebSockets的应用程序,WebSockets可以分为几个独立的模块。一个最简单的例子是聊天应用程序,其中客户端应用程序可以同时加入/连接到多个聊天室(每个聊天室彼此独立)。在开发此类应用时,组织连接的首选方法是什么
-
在客户端为每个聊天室打开新的websocket连接。通过这种方式,您将在服务器端拥有多个
javax.websocket.server.ServerEndpoint
实例,每个实例都具有不同的url。因此,服务器和客户端应用程序都将不那么复杂,并且可以分离为功能(可重用)块。缺点是客户端将不得不同时保持多个打开的连接。就我而言,我们谈论的是一次最多10个。 -
打开一个websocket连接,将消息多路传输到下面的聊天室,即通过消息中带有聊天室id的字段。实现起来没什么大不了的,会让应用程序变得更复杂一点,但这值得吗?
首选的方法是什么?
这通常不容易回答,因为这取决于您的特定设置。然而,以下是我对此的看法:
我认为选项2是更好的方法,因为对于许多Web服务器来说,开放连接确实是一种有限的资源。请记住,websocket连接不同于常规的http请求,并且会在很长一段时间内保持打开状态。我认为多路复用协议的额外复杂性实际上不是一个问题。我所知道的所有websocket通信协议的实现都使用后一种方法,尽管我必须承认我不知道太多的例子。