Open devinrsmith opened 1 year ago
Ping @mofojed @niloc132 for ideas.
With netty behind us, we could make a plain http endpoint of some kind to ask for advice on this.
On the other hand, websockets don't especially make sense in h2, so we're probably actually assuming h/1.1+tls?
I would want to know more about the specific use case before baking something in that all clients have to check on startup, as I expect this to be a pretty fringe use case.
There's some levels of js translation that I'm oblivious too - but there might be some sort of way we could allow server configuration to change the js it's serving up. IE, have two versions of WebConnection and pick the appropriate one.
Right, so we're going to need some form of passing params in to the JS API from the UI anyway, to facilitate DHE's expected envoy setup, so it wouldnt be unreasonable to parameterize the grpc transport too. But the UI would have to get that value from somewhere to pass to the API. Perhaps whatever ssl terminating proxy that can't handle h2 could rewrite the /ide/ path to something like /ide/?grpc.websockets=true and the UI could use that to hint to the JS API.
The web client uses websockets when the protocol is http, and HTTP/2 when the protocol is https. In some circumstances, a user might want to configure to use websockets over https.
This can be achieved by changing the code as seen in this commit https://github.com/deephaven/deephaven-core/commit/8847c7fb8b8757b44e5e5f97cd1dfefdd29eb3a1
Unfortunately, this is a compilation time decision, and not something that can be accomplished via startup configuration.
I'm not sure if there is a way where the client can be more "open" and allow some sort of server negotiation, or if there is another strategy we could employ to a better support this use case.