3 个不稳定版本
0.2.0 | 2024年1月20日 |
---|---|
0.1.1 | 2024年1月13日 |
0.1.0 | 2024年1月13日 |
#11 in #multiplexing
55KB
1.5K SLoC
tokio_smux
Tokio_smux 是 Rust 中 smux 的实现,smux 是 Golang 中的一个流复用库。
Tokio_smux 可以与 tokio 的 TcpStream 和 KcpStream 一起使用。它也可以与任何实现了 tokio 的 AsyncRead
和 AsyncWrite
特性的流一起使用。
文档
使用示例
请参阅 示例
Smux 协议实现
版本 2 的 smux 协议尚不支持。
为什么 tokio_smux 的 Stream
没有直接实现 AsyncRead
和 AsyncWrite
呢?
因为 smux 协议使用帧,意味着所有传输的用户数据都封装在固定长度的帧中。类似于 websocket 协议。
使用帧有其优点:它维护了消息边界。例如,您可以向远程发送多个单字节数据消息,并在远程逐个接收它们。
仍然可以通过封装当前 Stream
的 API 来提供 AsyncRead
和 AsyncWrite
。然而,这种方法引入了额外的开销,并丢失了消息边界。
依赖项
~4–16MB
~148K SLoC