akka/akka-http

Add support for proxying HTTPS server connections on the client side... for Web Sockets too

Open

#1,545 opened on Nov 22, 2017

View on GitHub
 (0 comments) (0 reactions) (0 assignees)Scala (1,311 stars) (598 forks)batch import
1 - triagedhelp wanted

Description

As suggested by the title, this issue is related to #192 and its PRs #917, #921 and #1200.

We are trying to connect to an "external" server through an HTTP(S) Proxy that does not allow any "wss://..." request.

So, the singleWebSocketRequest method may be of some help as soon as its "settings" parameter handles a custom ClientTransport, as explained here, in the doc for singleRequest method...

Unfortunately, singleWebSocketRequest method takes a ClientConnectionSettings "settings" parameter, while singleRequest method takes a ConnectionPoolSettings, and there is no way to tell a ClientConnectionSettings that its ClientTransport should not always be the default ClientTransport.TCP

So we tried...

  • we made ClientConnectionSettings just look like ConnectionPoolSettings regarding its "transport" parameter
  • we made a very little change in the way singleWebSocketRequest method calls for the private _outgoingTlsConnectionLayer method in Http.scala file (through webSocketClientFlow method actually)

and it works like a charm... for us.

So, I worked on a PR I should be able to submit very soon...

The goal here is, apart from sharing a solution, to verify that "it works like a charm", but not only for us ;-)

Contributor guide

Add support for proxying HTTPS server connections on the client side... for Web Sockets too · akka/akka-http#1545 | Good First Issue