add: user status

This commit is contained in:
trisua 2025-05-03 11:29:31 -04:00
parent 1724f798ca
commit a009ef9e34
10 changed files with 259 additions and 138 deletions

View file

@ -51,6 +51,8 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
let mut user: Option<User> = None;
let mut headers: Option<SocketHeaders> = None;
let channel_id = format!("chats/{community_id}");
// handle incoming messages on socket
let dbc = db.clone();
if let Some(Ok(WsMessage::Text(text))) = stream.next().await {
@ -185,12 +187,13 @@ pub async fn handle_socket(socket: WebSocket, db: DataManager, community_id: Str
});
let dbc = db.clone();
let channel_id_c = channel_id.clone();
let mut redis_task = tokio::spawn(async move {
// forward messages from redis to the socket
let mut pubsub = dbc.2.client.get_async_pubsub().await.unwrap();
pubsub.subscribe(user.id).await.unwrap();
pubsub.subscribe(community_id.clone()).await.unwrap();
pubsub.subscribe(channel_id_c).await.unwrap();
// listen for pubsub messages
let mut pubsub = pubsub.into_on_message();