EchoServerHttpRequestHandler.java 文件源码

java
阅读 24 收藏 0 点赞 0 评论 0

项目:examples-javafx-repos1 作者:
@Override
protected void channelRead0(ChannelHandlerContext ctx, FullHttpRequest request) throws Exception {

    if( wsURI.equalsIgnoreCase(request.getUri()) ) {

        ctx.fireChannelRead(request.retain());

    } else {

        if( HttpHeaders.is100ContinueExpected(request) ) {
            send100Continue(ctx);
        }

        try (
            RandomAccessFile rFile = new RandomAccessFile(indexHTML, "r")
        ) {
            HttpResponse response = new DefaultHttpResponse( request.getProtocolVersion(), HttpResponseStatus.OK );
            response.headers().set(HttpHeaders.Names.CONTENT_TYPE, "text/html; charset=UTF-8");
            boolean keepAlive = HttpHeaders.isKeepAlive(request);
            if( keepAlive ) {
                response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, rFile.length());
                response.headers().set(HttpHeaders.Names.CONNECTION, HttpHeaders.Values.KEEP_ALIVE);
            }

            ctx.write(response);

            if( ctx.pipeline().get(SslHandler.class) == null ) {
                ctx.write(new DefaultFileRegion(rFile.getChannel(), 0, rFile.length()));
            } else {
                ctx.write(new ChunkedNioFile(rFile.getChannel()));
            }

            ChannelFuture future = ctx.writeAndFlush(LastHttpContent.EMPTY_LAST_CONTENT);

            if( !keepAlive ) {
                future.addListener(ChannelFutureListener.CLOSE);
            }
        }
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号