There is a JSR for websockets, and they are doing a reference implementation
based on JDK 7 I believe.
As regards TCP sockets via Http proxies, JDK doesn't support that.
The closest thing is probably SOCKS. Can you use that?
- Michael
On 25/10/12 14:32, Vasiliy Baranov wrote:
Greetings,
And apologies if I am sending this to the wrong list...
Suppose I want my code to talk to a TCP server via an HTTP proxy, by
setting up a proxy tunnel using the CONNECT method. By any chance, is
there a mechanism in the Java SE networking stack that would allow me
to do so? A mechanism that would handle proxy selection, tunneling,
and, most importantly, authentication identically to HttpURLconnection?
If there is no such mechanism in JDK 7, could such a mechanism be
added in JDK 8?
FWIW, proxy selection and tunneling through non-authenticating proxy
is not too difficult to implement with ProxySelector and plain
Sockets, using
sun.net.www.protocol.http.HttpURLConnection.plainConnect as a
reference. My code does so already.
Proxy authentication, however, is a totally different story. If I
parse JDK code correctly, client code that does not use
HttpURLConnection is unlikely to be able to integrate nicely with the
AuthCacheValue cache or handle complex authentication schemes, unless
it chooses to depend on some JDK-internal APIs and duplicate great
amount of JDK code. My code probably cannot afford the latter two,
that is why I am asking for help here on this list. Since I have proxy
selection and non-authenticated tunneling already implemented, in my
case it would actually be sufficient to only have some JDK support for
proper integration with the AuthCacheValue cache and the standard
authentication schemes. However, I gather a more universal HTTP
tunneling facility, something that works like HttpURLConnection but
skips the final HTTP handshake with the end server, is likely to be a
cleaner solution.
If it matters, I am asking this in the context of adding support for
WebSockets to JavaFX WebView:
http://javafx-jira.kenai.com/browse/RT-14947
Thank you in advance,
-- Vasiliy