Arc*_*ano 9 websocket java-ee-7
Java EE 7允许您通过注释非常轻松地创建新端点.但是,我想知道有多个端点可以处理每个消息类型一个好主意,还是我应该只为一个端点设置一个端点?
我倾向于根据理论建立一个单端点外观,每个端点创建一个到客户端的新套接字连接.但是,该理论可能不正确,并且可以实现Web Socket,以便它只使用一个TCP/IP套接字连接,无论连接多少个Web套接字端点,只要它们连接到同一主机:端口即可.
我专门针对Java EE 7,因为可能有其他Web套接字服务器实现可能会以不同的方式执行.
刚刚注意到我的问题re:消息类型的含糊不清.当我说消息类型时,我指的是不同类型的应用程序消息,而不是本机消息类型,例如"二进制"或"文本".因此我将@PavelBucek的答案标记为已接受的答案.
但是,我确实尝试过使用Glassfish并有两个终点.我的怀疑是正确的,并且每个连接的端点都建立了TCP连接.如果在单个页面上使用多个websocket端点,这将导致服务器端的更多负载.
因此我得出结论,应该只有一个端点来处理应用程序消息,前提是所有内容都是单个本机类型.
这意味着应用程序需要执行调度,而不是依赖某些更高级别的API来为我们执行此操作.
唯一有效的答案是后一种选择-具有多个端点。
请参见WebSocket规范 2.1.3:
API将每个会话的MessageHandlers注册限制为每个本机Websocket消息类型一个MessageHandler。[WSC 2.1.3-1]换句话说,开发人员最多只能注册一个MessageHandler用于传入的文本消息,一个MessageHandler用于传入的二进制消息,以及一个MessageHandler用于传入的pong消息。如果违反了此限制,则Websocket实现必须生成错误[WSC 2.1.3-2]。
至于使用或不使用多个TCP连接-AFAIK当前,每个客户端都有一个新的连接,没有简单的方法可以强制执行其他任何操作。WebSocket复用应该可以解决它,但是我不认为任何WebSocket API实现都支持它(我可能是错的..)
| 归档时间: |
|
| 查看次数: |
6300 次 |
| 最近记录: |