Home / Class/ WebSocketClientHandler Class — netty Architecture

WebSocketClientHandler Class — netty Architecture

Architecture documentation for the WebSocketClientHandler class in WebSocketClientHandler.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  224c67d9_4aa5_5e3b_7392_068d6abd4f25["WebSocketClientHandler"]
  87249a84_0aba_c769_2895_3fdb4a795d6f["WebSocketClientHandler.java"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|defined in| 87249a84_0aba_c769_2895_3fdb4a795d6f
  56b02c2b_182e_a03f_3f3c_78eb7ac94f27["WebSocketClientHandler()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 56b02c2b_182e_a03f_3f3c_78eb7ac94f27
  8f57c3f3_1925_07b8_e9b4_8175c53aa313["ChannelFuture()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 8f57c3f3_1925_07b8_e9b4_8175c53aa313
  827766de_1bc6_9a0c_5191_6cee84e505ba["handlerAdded()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 827766de_1bc6_9a0c_5191_6cee84e505ba
  ab680687_b205_86e5_5f4c_9a12e62e7899["channelActive()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| ab680687_b205_86e5_5f4c_9a12e62e7899
  546e5b6c_2b8b_cf8d_9bfa_938393a25858["channelInactive()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 546e5b6c_2b8b_cf8d_9bfa_938393a25858
  8d27d58c_751d_7c61_94ea_2f07994ed4ca["channelRead0()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 8d27d58c_751d_7c61_94ea_2f07994ed4ca
  50467931_4863_c8bd_8df8_6621c251fdc8["exceptionCaught()"]
  224c67d9_4aa5_5e3b_7392_068d6abd4f25 -->|method| 50467931_4863_c8bd_8df8_6621c251fdc8

Relationship Graph

Source Code

example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClientHandler.java lines 54–124

public class WebSocketClientHandler extends SimpleChannelInboundHandler<Object> {

    private final WebSocketClientHandshaker handshaker;
    private ChannelPromise handshakeFuture;

    public WebSocketClientHandler(WebSocketClientHandshaker handshaker) {
        this.handshaker = handshaker;
    }

    public ChannelFuture handshakeFuture() {
        return handshakeFuture;
    }

    @Override
    public void handlerAdded(ChannelHandlerContext ctx) {
        handshakeFuture = ctx.newPromise();
    }

    @Override
    public void channelActive(ChannelHandlerContext ctx) {
        handshaker.handshake(ctx.channel());
    }

    @Override
    public void channelInactive(ChannelHandlerContext ctx) {
        System.out.println("WebSocket Client disconnected!");
    }

    @Override
    public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
        Channel ch = ctx.channel();
        if (!handshaker.isHandshakeComplete()) {
            try {
                handshaker.finishHandshake(ch, (FullHttpResponse) msg);
                System.out.println("WebSocket Client connected!");
                handshakeFuture.setSuccess();
            } catch (WebSocketHandshakeException e) {
                System.out.println("WebSocket Client failed to connect");
                handshakeFuture.setFailure(e);
            }
            return;
        }

        if (msg instanceof FullHttpResponse) {
            FullHttpResponse response = (FullHttpResponse) msg;
            throw new IllegalStateException(
                    "Unexpected FullHttpResponse (getStatus=" + response.status() +
                            ", content=" + response.content().toString(CharsetUtil.UTF_8) + ')');
        }

        WebSocketFrame frame = (WebSocketFrame) msg;
        if (frame instanceof TextWebSocketFrame) {
            TextWebSocketFrame textFrame = (TextWebSocketFrame) frame;
            System.out.println("WebSocket Client received message: " + textFrame.text());
        } else if (frame instanceof PongWebSocketFrame) {
            System.out.println("WebSocket Client received pong");
        } else if (frame instanceof CloseWebSocketFrame) {
            System.out.println("WebSocket Client received closing");
            ch.close();
        }
    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
        cause.printStackTrace();
        if (!handshakeFuture.isDone()) {
            handshakeFuture.setFailure(cause);
        }
        ctx.close();
    }
}

Frequently Asked Questions

What is the WebSocketClientHandler class?
WebSocketClientHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClientHandler.java.
Where is WebSocketClientHandler defined?
WebSocketClientHandler is defined in example/src/main/java/io/netty/example/http/websocketx/client/WebSocketClientHandler.java at line 54.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free