StompWebSocketClientPageHandler Class — netty Architecture
Architecture documentation for the StompWebSocketClientPageHandler class in StompWebSocketClientPageHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD b42dfc71_9168_e756_15f4_7d0276b026db["StompWebSocketClientPageHandler"] fca07a25_c248_9594_694a_e7fea43727af["StompWebSocketClientPageHandler.java"] b42dfc71_9168_e756_15f4_7d0276b026db -->|defined in| fca07a25_c248_9594_694a_e7fea43727af e3cdedb3_c5ef_29b6_56ca_c5f8bef3c58b["StompWebSocketClientPageHandler()"] b42dfc71_9168_e756_15f4_7d0276b026db -->|method| e3cdedb3_c5ef_29b6_56ca_c5f8bef3c58b a2c90322_aea7_93db_a3b3_6c785b6a2668["channelRead0()"] b42dfc71_9168_e756_15f4_7d0276b026db -->|method| a2c90322_aea7_93db_a3b3_6c785b6a2668 1347a6f5_daf3_a657_75a5_08dccb979171["sendResource()"] b42dfc71_9168_e756_15f4_7d0276b026db -->|method| 1347a6f5_daf3_a657_75a5_08dccb979171 f59e6f53_60f4_c71f_4c56_9c745733d169["sendResponse()"] b42dfc71_9168_e756_15f4_7d0276b026db -->|method| f59e6f53_60f4_c71f_4c56_9c745733d169
Relationship Graph
Source Code
example/src/main/java/io/netty/example/stomp/websocket/StompWebSocketClientPageHandler.java lines 45–146
@Sharable
public final class StompWebSocketClientPageHandler extends SimpleChannelInboundHandler<FullHttpRequest> {
static final StompWebSocketClientPageHandler INSTANCE = new StompWebSocketClientPageHandler();
private StompWebSocketClientPageHandler() {
}
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) {
if (request.headers().contains(HttpHeaderNames.UPGRADE, HttpHeaderValues.WEBSOCKET, true)) {
ctx.fireChannelRead(request.retain());
return;
}
if (request.decoderResult().isFailure()) {
FullHttpResponse badRequest = new DefaultFullHttpResponse(request.protocolVersion(), BAD_REQUEST);
sendResponse(badRequest, ctx, true);
return;
}
if (!sendResource(request, ctx)) {
FullHttpResponse notFound = new DefaultFullHttpResponse(request.protocolVersion(), NOT_FOUND);
notFound.headers().set(CONTENT_TYPE, TEXT_PLAIN);
String payload = "Requested resource " + request.uri() + " not found";
notFound.content().writeCharSequence(payload, CharsetUtil.UTF_8);
HttpUtil.setContentLength(notFound, notFound.content().readableBytes());
sendResponse(notFound, ctx, true);
}
}
private static boolean sendResource(FullHttpRequest request, ChannelHandlerContext ctx) {
if (request.uri().isEmpty() || !request.uri().startsWith("/")) {
return false;
}
String requestResource = request.uri().substring(1);
if (requestResource.isEmpty()) {
requestResource = "index.html";
}
URL resourceUrl = INSTANCE.getClass().getResource(requestResource);
if (resourceUrl == null) {
return false;
}
RandomAccessFile raf = null;
long fileLength = -1L;
try {
raf = new RandomAccessFile(resourceUrl.getFile(), "r");
fileLength = raf.length();
} catch (FileNotFoundException fne) {
System.out.println("File not found " + fne.getMessage());
return false;
} catch (IOException io) {
System.out.println("Cannot read file length " + io.getMessage());
return false;
} finally {
if (fileLength < 0 && raf != null) {
try {
raf.close();
} catch (IOException io) {
// Nothing to do
}
}
}
HttpResponse response = new DefaultHttpResponse(request.protocolVersion(), OK);
HttpUtil.setContentLength(response, fileLength);
String contentType = "application/octet-stream";
if (requestResource.endsWith("html")) {
contentType = "text/html; charset=UTF-8";
} else if (requestResource.endsWith("css")) {
contentType = "text/css; charset=UTF-8";
} else if (requestResource.endsWith("js")) {
contentType = "application/javascript";
}
response.headers().set(CONTENT_TYPE, contentType);
sendResponse(response, ctx, false);
Defined In
Source
Frequently Asked Questions
What is the StompWebSocketClientPageHandler class?
StompWebSocketClientPageHandler is a class in the netty codebase, defined in example/src/main/java/io/netty/example/stomp/websocket/StompWebSocketClientPageHandler.java.
Where is StompWebSocketClientPageHandler defined?
StompWebSocketClientPageHandler is defined in example/src/main/java/io/netty/example/stomp/websocket/StompWebSocketClientPageHandler.java at line 45.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free