#pub-sub #framework #stream #client #subscribe #quic #stream-oriented

bin+lib streamfly

面向流的 Pub/Sub 框架

1 个不稳定版本

0.1.0 2023年9月16日

#31 in #subscribe

MIT 许可证

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