1 个不稳定版本
0.1.0 | 2023年9月16日 |
---|
#31 in #subscribe
21KB
505 行
StreamFly
StreamFly 旨在成为一个面向流的 Pub/Sub 框架。
快速入门
- 创建一个 StreamFly 客户端
let mut client = new_client(
"127.0.0.1:1318".parse()?,
"localhost",
Path::new("./certs/cert.pem"),
)
.await?;
- 订阅流,然后接收数据
let rx = client.subscribe(CHANNEL).await?;
loop {
let (_, mut reader) = rx.recv().await?;
tokio::spawn(async move { tokio::io::copy(&mut reader, &mut tokio::io::stdout()).await });
}
- 发布一个流,然后向流中写入数据
let (stream_id, mut writer) = client.open_stream(CHANNEL).await?;
writer.write_all(b"Hello, Streamfly!").await?;
构建
- 构建 streamfly 命令行工具
RUSTFLAGS="--cfg s2n_quic_unstable" cargo build
- 构建示例
RUSTFLAGS="--cfg s2n_quic_unstable" cargo build --examples
运行演示
- 启动 StreamFly 服务器
RUST_LOG=debug ./target/debug/streamfly serve
- 启动一个接收器
RUST_LOG=debug ./target/debug/examples/sub
- 启动一个发送器
RUST_LOG=debug ./target/debug/examples/pub
- 你可以启动另一个接收器
RUST_LOG=debug ./target/debug/examples/sub
依赖项
~16–25MB
~362K SLoC