use futures::StreamExt;
use sseer::EventSource;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();
let request = client.get("https://example.com/events");
let mut event_source = EventSource::new(request)?;
println!("Connecting to SSE stream...");
while let Some(result) = event_source.next().await {
match result {
Ok(event) => {
use sseer::reqwest::StreamEvent;
match event {
StreamEvent::Open => {
println!("Connection opened!");
}
StreamEvent::Event(evt) => {
println!("Event type: {}", evt.event);
println!("Data: {}", evt.data);
if !evt.id.is_empty() {
println!("ID: {}", evt.id);
}
if let Some(retry) = evt.retry {
println!("Retry: {:?}", retry);
}
println!("---");
}
}
}
Err(e) => {
eprintln!("Error: {}", e);
if e.is_response_err() {
eprintln!("Server returned error response, stopping...");
break;
}
}
}
}
println!("Stream ended");
Ok(())
}