小编use*_*601的帖子

Jetty WebSocket代理

只是想知道是否有人使用嵌入式Jetty试验过WebSocket代理(透明代理)?

在使用Jetty 9.1.2.v20140210大约一天半之后,我所能说的是它无法以当前形式代理WebSockets,并且添加此类支持是非常重要的任务(至少是afaict).

基本上,Jetty ProxyServlet剥离了"Upgrade"和"Connection"头字段,无论它是否来自WebSocket握手请求.将这些字段添加回来很容易,如下所示.但是,当代理服务器返回带有HTTP代码101(切换协议)的响应时,代理服务器上不会进行协议升级.因此,当第一个WebSocket数据包到达时,HttpParser会扼杀并将其视为错误的HTTP请求.

如果有人已经有解决方案或熟悉Jetty建议尝试什么,那将非常感激.

下面是我的实验中删除不重要位的代码:

public class ProxyServer
{
    public static void main(String[] args) throws Exception
    {
        Server server = new Server();
        ServerConnector connector = new ServerConnector(server);
        connector.setPort(8888);
        server.addConnector(connector);

        // Setup proxy handler to handle CONNECT methods
        ConnectHandler proxy = new ConnectHandler();
        server.setHandler(proxy);

        // Setup proxy servlet
        ServletContextHandler context = new ServletContextHandler(proxy, "/", ServletContextHandler.SESSIONS);
        ServletHolder proxyServlet = new ServletHolder(MyProxyServlet.class);
        context.addServlet(proxyServlet, "/*");

        server.start();
    }
}

@SuppressWarnings("serial")
public class MyProxyServlet extends ProxyServlet
{
    @Override
    protected void customizeProxyRequest(Request proxyRequest, HttpServletRequest request) …
Run Code Online (Sandbox Code Playgroud)

proxy jetty websocket

21
推荐指数
1
解决办法
1823
查看次数

标签 统计

jetty ×1

proxy ×1

websocket ×1