added an authenticated room websocket for messages

This commit is contained in:
2025-12-15 19:51:31 +01:00
parent 391a0d3f2e
commit ffc2e99cc7
8 changed files with 240 additions and 14 deletions

27
src/realtime.rs Normal file
View File

@@ -0,0 +1,27 @@
use dashmap::DashMap;
use std::sync::Arc;
use tokio::sync::broadcast;
use crate::routes::messages::Message;
pub type RoomId = i32;
#[derive(Clone)]
pub struct Realtime {
pub rooms: Arc<DashMap<RoomId, broadcast::Sender<Message>>>,
}
impl Realtime {
pub fn new() -> Self {
Self {
rooms: Arc::new(DashMap::new()),
}
}
pub fn sender_for(&self, room: RoomId) -> broadcast::Sender<Message> {
self.rooms
.entry(room)
.or_insert_with(|| broadcast::channel(100).0)
.clone()
}
}