On Wed, 16 Jun 2021 12:07:25 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 with a new target base due to a > merge or a rebase. The incremental webrev excludes the unrelated changes > brought in by the merge/rebase. The pull request contains five additional > commits since the last revision: > > - Merge branch 'master' into websocket > - fixed small error in previous update. Doesn't affect test, but just looks > odd > - changed AtomicReference to CompletableFuture > - add comments to test > - fix implementation plus some extra websocket test work Marked as reviewed by dfuchs (Reviewer). ------------- PR: https://git.openjdk.java.net/jdk/pull/4506