diamond-in's picture
Update src/sse/stream.rs
cd2cbe1 verified
use axum::response::sse::{Event, Sse};
use futures_util::stream::Stream;
use std::convert::Infallible;
use tokio_stream::StreamExt;
use tokio::sync::broadcast;
pub async fn sse_handler(
rx: broadcast::Receiver<String>,
) -> Sse<impl Stream<Item = Result<Event, Infallible>>> {
let stream = tokio_stream::wrappers::BroadcastStream::new(rx).map(|msg| {
match msg {
Ok(data) => Ok(Event::default().data(data)),
Err(_) => Ok(Event::default().data("ping")),
}
});
Sse::new(stream)
}