WebSocketServerHandler Class — netty Architecture
Architecture documentation for the WebSocketServerHandler class in WebSocketServerHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd["WebSocketServerHandler"] a304f393_f63c_fb72_cc6a_54fb179fc5b0["WebSocketServerHandler.java"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|defined in| a304f393_f63c_fb72_cc6a_54fb179fc5b0 75e316aa_b744_349b_a240_9ef9a100569e["channelRead0()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| 75e316aa_b744_349b_a240_9ef9a100569e 508ffeb5_9c37_f836_dadf_0849a826f397["channelReadComplete()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| 508ffeb5_9c37_f836_dadf_0849a826f397 fcec6aed_39e7_3b17_aeb4_b612a777c609["handleHttpRequest()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| fcec6aed_39e7_3b17_aeb4_b612a777c609 561e834f_6fd1_e74c_a65e_ce5f1a9df2e3["handleWebSocketFrame()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| 561e834f_6fd1_e74c_a65e_ce5f1a9df2e3 e1c780b8_8a58_a843_981f_2378e8000b08["sendHttpResponse()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| e1c780b8_8a58_a843_981f_2378e8000b08 c73db5f6_2a9c_7121_7417_d6720f556959["exceptionCaught()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| c73db5f6_2a9c_7121_7417_d6720f556959 af3c428c_9c20_3e6a_a0f8_9f0328a14631["String()"] 3f7d4c4e_8262_9dae_1834_1af8d0f2e6dd -->|method| af3c428c_9c20_3e6a_a0f8_9f0328a14631
Relationship Graph
Source Code
example/src/main/java/io/netty/example/http/websocketx/benchmarkserver/WebSocketServerHandler.java lines 45–162
public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object> {
private static final String WEBSOCKET_PATH = "/websocket";
private WebSocketServerHandshaker handshaker;
@Override
public void channelRead0(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof FullHttpRequest) {
handleHttpRequest(ctx, (FullHttpRequest) msg);
} else if (msg instanceof WebSocketFrame) {
handleWebSocketFrame(ctx, (WebSocketFrame) msg);
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
ctx.flush();
}
private void handleHttpRequest(ChannelHandlerContext ctx, FullHttpRequest req) {
// Handle a bad request.
if (!req.decoderResult().isSuccess()) {
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(req.protocolVersion(), BAD_REQUEST,
ctx.alloc().buffer(0)));
return;
}
// Allow only GET methods.
if (!GET.equals(req.method())) {
sendHttpResponse(ctx, req, new DefaultFullHttpResponse(req.protocolVersion(), FORBIDDEN,
ctx.alloc().buffer(0)));
return;
}
// Send the demo page and favicon.ico
if ("/".equals(req.uri())) {
ByteBuf content = WebSocketServerBenchmarkPage.getContent(getWebSocketLocation(req));
FullHttpResponse res = new DefaultFullHttpResponse(req.protocolVersion(), OK, content);
res.headers().set(HttpHeaderNames.CONTENT_TYPE, "text/html; charset=UTF-8");
HttpUtil.setContentLength(res, content.readableBytes());
sendHttpResponse(ctx, req, res);
return;
}
if ("/favicon.ico".equals(req.uri())) {
FullHttpResponse res = new DefaultFullHttpResponse(req.protocolVersion(), NOT_FOUND,
ctx.alloc().buffer(0));
sendHttpResponse(ctx, req, res);
return;
}
// Handshake
WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(
getWebSocketLocation(req), null, true, 5 * 1024 * 1024);
handshaker = wsFactory.newHandshaker(req);
if (handshaker == null) {
WebSocketServerHandshakerFactory.sendUnsupportedVersionResponse(ctx.channel());
} else {
handshaker.handshake(ctx.channel(), req);
}
}
private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) {
// Check for closing frame
if (frame instanceof CloseWebSocketFrame) {
handshaker.close(ctx, (CloseWebSocketFrame) frame.retain());
return;
}
if (frame instanceof PingWebSocketFrame) {
ctx.write(new PongWebSocketFrame(frame.content().retain()));
return;
}
if (frame instanceof TextWebSocketFrame) {
// Echo the frame
ctx.write(frame.retain());
return;
}
Defined In
Source
Frequently Asked Questions
What is the WebSocketServerHandler class?
WebSocketServerHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/http/websocketx/benchmarkserver/WebSocketServerHandler.java.
Where is WebSocketServerHandler defined?
WebSocketServerHandler is defined in example/src/main/java/io/netty/example/http/websocketx/benchmarkserver/WebSocketServerHandler.java at line 45.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free