WTransport
WebTransport protocol, pure-rust, async-friendly.
Introduction
WebTransport is a new protocol being developed to enable low-latency, bidirectional communication between clients and servers over the web. It aims to address the limitations of existing protocols like HTTP and WebSocket by offering a more efficient and flexible transport layer.
Benefits of WebTransport
- :rocket: Low latency: WebTransport is designed to minimize latency, making it suitable for real-time applications such as gaming, video streaming, and collaborative editing.
- :arrows_counterclockwise: Bidirectional communication: WebTransport allows simultaneous data exchange between the client and server, enabling efficient back-and-forth communication without the need for multiple requests.
- :twisted_rightwards_arrows: Multiplexing: With WebTransport, multiple streams can be multiplexed over a single connection, reducing overhead and improving performance.
- :lock: Security: WebTransport benefits from the security features provided by the web platform, including transport encryption and same-origin policy.
Notes
Please be aware that WebTransport is still a draft and not yet standardized. The WTransport library, while functional, is not considered completely production-ready. It should be used with caution and may undergo changes as the WebTransport specification evolves.
Simple API
async
async
Getting Started
0. Clone the Repository
1. Generate TLS Certificate
This will generate cert.pem and key.pem in the current working directory.
Moreover, the program will also output the fingerprint of the certificate. Something like this:
Certificate generated
Fingerprint: OjyqTe//WoGnvBrgiO37tkOQJyuN1r7hhyBzwX0gotg=
Please take note of the fingerprint, as you will need it to verify the certificate on the client side.
2. Run Example Server
3. Run Client on Browser
Latest versions of Google Chrome started supporting some implementations of the protocol.
Since the generated certificate is self-signed, it cannot be directly accepted by the browser at the moment. In order to allow the local certificate, you need to launch Google Chrome with two additional options:
google-chrome \
--webtransport-developer-mode \
--ignore-certificate-errors-spki-list=FINGERPRINT
Replace FINGERPRINT with the value obtained in step 1.
For example, OjyqTe//WoGnvBrgiO37tkOQJyuN1r7hhyBzwX0gotg=.
4. Connect to the Server
Open the website https://webtransport.day/ on Google Chrome instace. Use the URL: https://localhost:4433, and click on Connect.
Enjoy!
Examples
Other languages
WTransport has bindings for the following languages:
- Elixir: wtransport-elixir