use futures::Stream;
use micro_web::encoding::encoder::EncodeDecorator;
use micro_web::responder::sse::{build_sse_stream_emitter, Event, SseStream};
use micro_web::router::{get, Router};
use micro_web::Server;
async fn sse_process() -> SseStream<impl Stream<Item = Event>> {
let (stream, mut emitter) = build_sse_stream_emitter(2);
tokio::spawn(async move {
for i in 0..5 {
tokio::time::sleep(tokio::time::Duration::from_secs(1)).await;
let _ = emitter.send(Event::from_data(format!("{}", i))).await;
}
let _ = emitter.close().await;
});
stream
}
async fn default_handler() -> &'static str {
"404 not found"
}
#[tokio::main]
async fn main() {
let router = Router::builder()
.route("/sse", get(sse_process))
.with_global_decorator(EncodeDecorator)
.build();
Server::builder().router(router).bind("127.0.0.1:8080").default_handler(default_handler).build().unwrap().start().await;
}