带有AsyncHttpClient的WebSockets(wss)和代理服务器

时间:2012-08-06 02:52:50

标签: websocket netty grizzly asynchttpclient

我正在尝试使用具有代理服务器配置的AsyncHttpClient来使用wss连接并且没有运气。我一直在使用async-http-client 1.7.5和grizzly-websockets 2.2.13我的第一次尝试

AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder()
        .setSSLContext(sc)
        .setProxyServer(
        new ProxyServer(Protocol.HTTP, "192.168.1.130", 3128))
        .build();
NettyWebSocket w = (NettyWebSocket)c.prepareGet("wss://192.168.1.124/atmosphere-chat/chat")
        .execute(handler).get();

使用默认的netty配置无法正常工作,此尝试似乎至少通过代理并连接到远程服务器。我到那里的例外是

java.lang.IllegalArgumentException: unsupported message type: class org.jboss.netty.handler.codec.http.websocketx.TextWebSocketFrame

当我切换到使用灰熊时

AsyncHttpClient c = new AsyncHttpClient(new GrizzlyAsyncHttpProvider(config), config);

事情变得更好/更糟。在这种情况下,似乎灰熊无法通过http代理发送连接动词,并立即开始通过ssl进行通信,这失败了。我认为这将是一个受到良好支持的情况,因为在使用SSL时,websocket连接可能通过代理工作的可能性增加。 ]

Exception in thread "main" java.util.concurrent.ExecutionException: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

我是否超出应该工作的范围?

1 个答案:

答案 0 :(得分:1)

原来这是AHC中的一个错误(https://github.com/sonatype/async-http-client/issues/131#issuecomment-7745037),它在1.8.0中得到修复。