peoplesmeat
peoplesmeat

Reputation: 66

WebSockets (wss) and Proxy Server with AsyncHttpClient

I am trying to use AsyncHttpClient with a proxy server configuration to connect using wss and am having no luck. I've been using async-http-client 1.7.5 and grizzly-websockets 2.2.13 My first attempt

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();

using the default netty configuration fails to work, This attempt appears to at least go through the proxy and connect to the remote server. The exception I get there is

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

When I switch to using grizzly through

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

Things are better/worse. In this instance it appears that grizzly fails to send the connect verb through the http proxy, and instantly starts communicating via ssl, which fails. I would think this would be a well supported situation because of the increased likelyhood that a websocket connection would work through a proxy when using SSL. ]

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

Am I way outside the bounds of what should be working?

Upvotes: 1

Views: 2305

Answers (1)

peoplesmeat
peoplesmeat

Reputation: 66

Turns out this was a bug in AHC ( https://github.com/sonatype/async-http-client/issues/131#issuecomment-7745037 ) That gets fixed in 1.8.0.

Upvotes: 1

Related Questions