5 个不稳定版本

0.3.2 2020 年 7 月 30 日
0.3.1 2020 年 3 月 4 日
0.3.0 2020 年 3 月 2 日
0.2.0 2020 年 1 月 22 日
0.1.0 2019 年 12 月 23 日

#2 in #encodes

Download history 2006/week @ 2024-03-13 1821/week @ 2024-03-20 1908/week @ 2024-03-27 2345/week @ 2024-04-03 1996/week @ 2024-04-10 1753/week @ 2024-04-17 1716/week @ 2024-04-24 1878/week @ 2024-05-01 2978/week @ 2024-05-08 1744/week @ 2024-05-15 1819/week @ 2024-05-22 1801/week @ 2024-05-29 2279/week @ 2024-06-05 2643/week @ 2024-06-12 3821/week @ 2024-06-19 4628/week @ 2024-06-26

13,667 每月下载量
16 个包中使用了 (直接使用 3 个)

MPL-2.0 许可协议

33KB
757 代码行

sse-codec

A futures_codec that encodes and decodes Server-Sent Event/Event Sourcing streams.

文档

docs.rs 上。

安装

使用 cargo-edit 做以下操作

cargo add sse-codec

或在 Cargo.toml 中

[dependencies]
sse-codec = "0.3.2"
  • surf-sse - 基于 Surf 和 sse-codec 的 EventSource 客户端。

许可

MPL-2.0


lib.rs:

A futures_codec that encodes and decodes Server-Sent Event/Event Sourcing streams.

它输出或序列化完整消息,以及元消息 retry:

示例

use sse_codec::{decode_stream, Event};
use futures::stream::TryStreamExt; // for try_next()

let response = surf::get("https://some-site.com/events").await?;
let mut events = decode_stream(response);

while let Some(event) = events.try_next().await? {
    println!("incoming: {:?}", event);

    match event {
        Event::Retry { retry } => {
            // change a retry timer value or something
        }
        Event::Message { event, .. } if event == "stop" => {
            break;
        }
        Event::Message { id, event, data } => {
            if let Some(id) = id {
                // change the last event ID
            }
            // handle event here
        }
    }
}

来自 web-platform-tests 套件的 EventSource 测试。请参阅 https://github.com/web-platform-tests/wpt/tree/master/eventsource

依赖关系

~3MB
~60K SLoC