1 个不稳定版本
0.0.2 | 2024 年 1 月 28 日 |
---|---|
0.0.1 |
|
#3 在 #boringssl
49KB
1K SLoC
tokio-quicker
使用 quiche 的 tokio 异步 QUIC 监听器/套接字。
路线图
- 用于服务器用途的 QuicListener。
- 用于客户端用途的 QuicSocket。
- Boringssl 密钥生成(可以通过禁用默认功能来禁用)。
- 可更换的后端(quiche/quinn)以支持 boringssl 和 openssl。
示例
客户端
首先创建一个 QuicSocket
。
let mut connection = QuicSocket::bind("127.0.0.1:0")
.await?
.connect(Some("localhost"), "127.0.0.1:4433")
.await?;
然后您可以开始打开新的 QuicStream
或从服务器接收它们。
let mut stream = connection.bidi(1).await?;
let mut stream = connection.incoming().await?;
这些实现了 tokio 的 AsyncRead
和 AsyncWrite
特性。
服务器
再次创建一个 QuicListener
。
let mut listener = QuicListener::bind("127.0.0.1:4433").await?;
然后您可以使用 while 循环来接受传入的连接,并在线程上直接处理它们或将它们移动到新线程。
while let Ok(mut connection) = listener.accept().await {
tokio::spawn(async move {
let mut stream = connection.incoming().await?;
...
stream.shutdown().await?;
});
}
依赖项
~68MB
~1.5M SLoC