On Wed, 16 Jun 2021 11:24:43 GMT, Michael McMahon <micha...@openjdk.org> wrote:

>> Hi,
>> 
>> This fixes a problem where the listener methods of a WebSocket client were 
>> being invoked by the Selector manager thread, which is problematic, because 
>> if the implementation of any of these methods tries to do any blocking work, 
>> this impacts other http activity, and if the blocking work is a http client 
>> call, then a hang can result. The fix makes the HttpClient's executor 
>> available to WebSocketImpl and that is used to offload the listener 
>> invocations.
>> 
>> The fix also adds a more comprehensive test framework for WebSockets (in 
>> WebSocketServer). Up to now we just had a limited server side in the tests 
>> that can only do the handshake. This change adds an API and implementation 
>> for server's to receive websocket messages and send replies back to clients. 
>> To implement this, the server hooks into WebSocket's Frame, MessageEncoder 
>> and MessageDecoder classes. Therefore, the implementations of these classes 
>> had to be modified to allow for the encoding of server generated messages 
>> and the decoding of client generated messages. The only difference between 
>> client and server in this respect relates to payload masking which is only 
>> done for messages sent from client to server.
>> 
>> There's a couple of warts that I wasn't sure what to do with. 1) There is 
>> already a copy of the Frame implementation class in the test hierarchy. I 
>> presume this is used by other tests, but that implementation is not used by 
>> this change. 2) The WebSocketServer is based on the existing 
>> DummyWebSocketServer class which is used by other tests. I can't see any 
>> easy way to refactor/combine these implementations.
>> 
>> Thanks,
>> 
>> Michael.
>
> Michael McMahon has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   fixed small error in previous update. Doesn't affect test, but just looks 
> odd

Marked as reviewed by dfuchs (Reviewer).

-------------

PR: https://git.openjdk.java.net/jdk/pull/4506

Reply via email to