fixes-22
This commit is contained in:
parent
d26f952949
commit
1f3019ea1a
15
src/main.rs
15
src/main.rs
|
@ -12,7 +12,6 @@ use uuid::Uuid;
|
||||||
use chrono::Utc;
|
use chrono::Utc;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
enum PayloadKind {
|
enum PayloadKind {
|
||||||
|
@ -56,8 +55,6 @@ async fn get_auth_id(token: &str) -> Result<i32, Box<dyn Error>> {
|
||||||
Ok(id)
|
Ok(id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Функция создает первый чат для пользователя. В чате два участника: пользователь и автор с идентификатором 1.
|
|
||||||
// Данные чата сохраняются в Redis.
|
|
||||||
async fn create_first_chat(author_id: i32, con: &mut redis::aio::Connection) -> Result<Vec<String>, Box<dyn Error>> {
|
async fn create_first_chat(author_id: i32, con: &mut redis::aio::Connection) -> Result<Vec<String>, Box<dyn Error>> {
|
||||||
let chat_id = Uuid::new_v4().to_string();
|
let chat_id = Uuid::new_v4().to_string();
|
||||||
let members = vec![author_id.to_string(), "1".to_string()];
|
let members = vec![author_id.to_string(), "1".to_string()];
|
||||||
|
@ -145,12 +142,14 @@ async fn sse_handler(
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut pubsub = con.into_pubsub();
|
let mut pubsub = con.into_pubsub();
|
||||||
for chat_id in chats {
|
|
||||||
if let Err(e) = pubsub.subscribe(format!("chat:{}", chat_id)).await {
|
let mut con = match redis.get_async_connection().await {
|
||||||
eprintln!("Failed to subscribe to chat: {}", e);
|
Ok(con) => con,
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("Failed to get async connection: {}", e);
|
||||||
return HttpResponse::InternalServerError().finish();
|
return HttpResponse::InternalServerError().finish();
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
let _ = match con.srem::<&str, &i32, usize>("authors-online", &author_id).await {
|
let _ = match con.srem::<&str, &i32, usize>("authors-online", &author_id).await {
|
||||||
Ok(_) => (),
|
Ok(_) => (),
|
||||||
|
@ -160,7 +159,7 @@ async fn sse_handler(
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let server_event = match Arc::clone(&rx).recv().await {
|
let server_event = match rx.recv().await {
|
||||||
Ok(event) => event,
|
Ok(event) => event,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
eprintln!("Failed to receive server event: {}", e);
|
eprintln!("Failed to receive server event: {}", e);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user