Which is better: multiple web socket endpoints or single web socket endpoint in Java EE7

拈花ヽ惹草 提交于 2019-12-04 18:56:20

问题


Java EE 7 allows you to create new endpoints very easily through annotations. However, I was wondering is having multiple endpoints one to handle each message type a good idea or should I have just one endpoint facade for everything?

I am leaning towards having one single end-point facade based on the theory that each endpoint creates a new socket connection to the client. However, that theory could be incorrect and Web Socket may be implemented so that it will use just one TCP/IP socket connection regardless of how many web socket end points are connected so long as they connect to the same host:port.

I am asking specifically for Java EE 7, as there may be other web socket server implementations that may do things differently.


回答1:


The only valid answer here is the latter option - having multiple endpoints.

See WebSocket spec chaper 2.1.3:

The API limits the registration of MessageHandlers per Session to be one MessageHandler per native websocket message type. [WSC 2.1.3-1] In other words, the developer can only register at most one Mes- sageHandler for incoming text messages, one MessageHandler for incoming binary messages, and one MessageHandler for incoming pong messages. The websocket implementation must generate an error if this restriction is violated [WSC 2.1.3-2].

As for using or not using multiple TCP connections - AFAIK currently there will be new connection for every client and there is no easy way how you can force anything else. WebSocket multiplexing should solve it, but I don't think any WebSocket API implementation support it (I might be wrong..)




回答2:


Just noticed an ambiguity on my question re: message types. When I say message types I meant different kinds of application messages not native message types such as "binary" or "text". As such I marked @PavelBucek answer as the accepted one.

However, I did try an experiment with Glassfish and having two end points. My suspicions were correct and that there is a TCP connection established per connected endpoint. This would cause more load on the server side if there is more than one websocket endpoint being used on a single page.

As such I concluded that there should be only one endpoint to handle the application messages provided that everything is a single native type.

This would mean that the application needs to do the dispatching rather than relying on some higher level API to do it for us.



来源:https://stackoverflow.com/questions/17280455/which-is-better-multiple-web-socket-endpoints-or-single-web-socket-endpoint-in

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!