netty实现javaweb应用服务器 (netty http服务器怎么开发的)

http代理服务器

代理服务器,Proxy Server,http代理服务器就是基于http协议的代理服务器。

LittleProxy

LittleProxy是一个用Java编写的高性能HTTP代理服务器,基于Netty事件的网络库之上,它非常稳定,性能良好,易于集成到项目中,支持命令行和嵌入式方式。

地址:https://github.com/adamfisk/LittleProxy

代码案例

pom.xml

<dependencies>
    <dependency>
        <groupId>org.littleshoot</groupId>
        <artifactId>littleproxy</artifactId>
        <version>1.1.2</version>
    </dependency>
</dependencies>

使用代码

import org.littleshoot.proxy.HttpProxyServer;
import org.littleshoot.proxy.impl.DefaultHttpProxyServer;

public class HttpClientServer {

    public static void main(String[] args) {
        HttpProxyServer server = DefaultHttpProxyServer.bootstrap()
                .withPort(11111)
                .withFiltersSource(new MyHttpFiltersSourceAdapter())
                .start();
    }

}
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.*;
import org.littleshoot.proxy.HttpFilters;
import org.littleshoot.proxy.HttpFiltersAdapter;
import org.littleshoot.proxy.HttpFiltersSourceAdapter;

public class MyHttpFiltersSourceAdapter extends HttpFiltersSourceAdapter {

    public HttpFilters filterRequest(HttpRequest originalRequest, ChannelHandlerContext ctx) {
        String uri = originalRequest.getUri();
        HttpMethod method = originalRequest.getMethod();
        System.out.println("method=" + method + ",uri=" + uri);

        return new HttpFiltersAdapter(originalRequest) {

            @Override
            public HttpResponse clientToProxyRequest(HttpObject httpObject) {
                // TODO: implement your filtering here
                System.out.println("clientToProxyRequest=" + httpObject);
                return null;
            }

            @Override
            public HttpObject serverToProxyResponse(HttpObject httpObject) {
                // TODO: implement your filtering here
                System.out.println("serverToProxyResponse=" + httpObject);
                return httpObject;
            }
        };
    }

    @Override
    public int getMaximumResponseBufferSizeInBytes() {
        return 10 * 1024 * 1024;
    }

}

真是个好年代,什么东西别人都替你写好了~~