realtime/server/
runtime.rs1use std::sync::Arc;
2
3use async_trait::async_trait;
4
5use super::{RealtimeError, SessionAuth, SocketServerHandle};
6
7#[async_trait]
8pub trait RealtimeTokenVerifier: Send + Sync + 'static {
9 async fn verify_token(&self, token: &str) -> Result<SessionAuth, RealtimeError>;
13}
14
15#[derive(Clone)]
23pub struct SocketAppState {
24 pub handle: SocketServerHandle,
25 pub verifier: Arc<dyn RealtimeTokenVerifier>,
26}
27
28impl SocketAppState {
29 pub fn new<V>(handle: SocketServerHandle, verifier: V) -> Self
31 where
32 V: RealtimeTokenVerifier,
33 {
34 Self {
35 handle,
36 verifier: Arc::new(verifier),
37 }
38 }
39
40 pub fn new_with_shared_verifier(
42 handle: SocketServerHandle,
43 verifier: Arc<dyn RealtimeTokenVerifier>,
44 ) -> Self {
45 Self { handle, verifier }
46 }
47}