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();
}
}
Defined In
Source
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