This commit is contained in:
Tony Rewin 2023-10-02 15:30:53 +03:00
parent 908a94056b
commit 65821f561d

View File

@ -81,15 +81,8 @@ async fn sse_handler(
pubsub.subscribe(format!("message:{}", chat_id)).await.unwrap(); pubsub.subscribe(format!("message:{}", chat_id)).await.unwrap();
} }
let server_event = rx.get_ref().into_stream().map(|result| { let mut rx = rx.get_ref().subscribe();
match result { let server_event = rx.recv().await.unwrap();
Ok(payload) => {
let payload: Payload = serde_json::from_str(&payload).unwrap();
Ok::<_, actix_web::Error>(web::Bytes::from(format!("data: {:?}\n\n", payload.chat_id)))
}
Err(_) => Err(actix_web::Error::from("An error occurred")),
}
});
let _: () = con let _: () = con
.srem("authors-online", &author_id) .srem("authors-online", &author_id)
@ -114,7 +107,7 @@ async fn main() -> std::io::Result<()> {
pubsub.subscribe("new_shout").await.unwrap(); pubsub.subscribe("new_shout").await.unwrap();
pubsub.subscribe("new_reaction").await.unwrap(); pubsub.subscribe("new_reaction").await.unwrap();
while let Some(msg) = pubsub.on_message().await { while let Some(msg) = pubsub.on_message().next().await {
let payload: HashMap<String, String> = msg.get_payload().unwrap(); let payload: HashMap<String, String> = msg.get_payload().unwrap();
tx.send(serde_json::to_string(&payload).unwrap()).unwrap(); tx.send(serde_json::to_string(&payload).unwrap()).unwrap();
} }
@ -122,7 +115,7 @@ async fn main() -> std::io::Result<()> {
HttpServer::new(move || { HttpServer::new(move || {
App::new() App::new()
.app_data(web::Data::new(rx.clone())) .app_data(web::Data::new(rx.subscribe()))
.app_data(web::Data::new(client.clone())) .app_data(web::Data::new(client.clone()))
.route("/aware/{token}", web::get().to(sse_handler)) .route("/aware/{token}", web::get().to(sse_handler))
}) })