#channel #phoenix #sockets #serde-json

phyllo

基于 WebSocket 的 Phoenix 通道客户端

4 个版本 (2 个重大更新)

0.3.0 2022 年 7 月 28 日
0.2.0 2022 年 7 月 8 日
0.1.1 2022 年 7 月 7 日
0.1.0 2022 年 7 月 7 日

#210 in WebSocket

Download history 164/week @ 2024-03-13 252/week @ 2024-03-20 195/week @ 2024-03-27 158/week @ 2024-04-03 164/week @ 2024-04-10 164/week @ 2024-04-17 188/week @ 2024-04-24 207/week @ 2024-05-01 221/week @ 2024-05-08 147/week @ 2024-05-15 172/week @ 2024-05-22 178/week @ 2024-05-29 131/week @ 2024-06-05 138/week @ 2024-06-12 142/week @ 2024-06-19 104/week @ 2024-06-26

每月 538 次下载
2 crates 中使用

MIT/Apache 许可

64KB
1.5K SLoC

phyllo

使用 Actor 模型在 Rust 中实现的 Phoenix 通道。此 crate 通过提供 Socket 和 Channel 抽象来连接、接收和发送消息。整体结构基于 参考 JavaScript 客户端

示例

警告:返回的结果可能包含 NSFW 链接或评论。

use serde_json::Value;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    // The socket is generic over a Topic.
    let mut socket = SocketBuilder::new(Url::parse("wss://furbooru.org/socket/websocket")?)
        .build::<String>()
        .await;

    // Each channel is generic over an Event and Payload type.
    // For simplicity we use serde_json::Value, but in your own code you should deserialize
    // to something strongly-typed.
    let (_channel, mut subscription) = socket
        .channel::<String, Value, Value>(ChannelBuilder::new("firehose".to_string()))
        .await?;

    loop {
        let v = subscription.recv().await?;
        println!("{:?}", v);
    }
}

特性

默认情况下未启用 TLS。要支持 TLS,请启用以下任一项

许可证:MIT OR Apache-2.0

依赖项

~7–18MB
~271K SLoC