5 unstable releases

0.3.2 Jul 30, 2020
0.3.1 Mar 4, 2020
0.3.0 Mar 2, 2020
0.2.0 Jan 22, 2020
0.1.0 Dec 23, 2019

#3 in #encodes

Download history 1422/week @ 2023-12-07 1391/week @ 2023-12-14 1519/week @ 2023-12-21 1435/week @ 2023-12-28 1941/week @ 2024-01-04 1720/week @ 2024-01-11 2240/week @ 2024-01-18 1392/week @ 2024-01-25 1491/week @ 2024-02-01 2596/week @ 2024-02-08 2336/week @ 2024-02-15 2975/week @ 2024-02-22 2801/week @ 2024-02-29 2210/week @ 2024-03-07 1848/week @ 2024-03-14 1542/week @ 2024-03-21

9,000 downloads per month
Used in 11 crates (3 directly)

MPL-2.0 license

33KB
757 lines

sse-codec

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

Documentation

On docs.rs.

Installation

With cargo-edit do:

cargo add sse-codec

Or in Cargo.toml:

[dependencies]
sse-codec = "0.3.2"
  • surf-sse - EventSource client based on Surf and sse-codec.

License

MPL-2.0


lib.rs:

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

It emits or serializes full messages, and the meta-message retry:.

Examples

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
        }
    }
}

EventSource tests from the web-platform-tests suite. See https://github.com/web-platform-tests/wpt/tree/master/eventsource

Dependencies

~3MB
~60K SLoC