HomePhabricator
Diffusion Comm 62172ad0caf8

[tunnelbroker] Hyper service for WebSocket connections

Description

[tunnelbroker] Hyper service for WebSocket connections

Summary:
Implementation basing on tokio-tungstenite doesn't work well with upgrading HTTP connection to WebSocket. This diff implements hyper service for WebSocket connections, using hyper-tungstenite library.
By doing that, we also get health check for free. In the future, we can support more "normal" HTTP requests on the same port as websocket.

A great series of articles describing Tower / Hyper services under the hood: https://www.fpcomplete.com/blog/axum-hyper-tonic-tower-part2/

The hyper-tungstenite library does more or less stuff that is described in this article: https://levelup.gitconnected.com/handling-websocket-and-http-on-the-same-port-with-rust-f65b770722c9

Depends on D9156.

Test Plan: Tunnelbroker builds. Actual test plan is in the next diff.

Reviewers: kamil, michal, varun, jon

Reviewed By: michal

Subscribers: ashoat, tomek

Differential Revision: https://phab.comm.dev/D9158

Details

Provenance
bartekAuthored on Sep 12 2023, 1:22 PM
Reviewer
michal
Differential Revision
D9158: [tunnelbroker] Hyper service for WebSocket connections
Parents
rCOMMc6850660a189: [tunnelbroker] Make WebSocketSession generic
Branches
Unknown
Tags
Unknown