pub struct RedisPubSub { /* private fields */ }Expand description
Redis pub/sub backend for cross-instance WebSocket broadcast.
When a server instance needs to broadcast to a room, it publishes to a Redis channel. All instances subscribe to these channels and route messages to their locally connected clients.
Implementations§
Source§impl RedisPubSub
impl RedisPubSub
Sourcepub async fn publish(&self, msg: &PubSubMessage) -> Result<(), ShaperailError>
pub async fn publish(&self, msg: &PubSubMessage) -> Result<(), ShaperailError>
Publishes a broadcast message to Redis so all instances receive it.
Sourcepub fn start_subscriber(
&self,
channel_name: &str,
room_manager: RoomManager,
redis_url: &str,
) -> JoinHandle<()>
pub fn start_subscriber( &self, channel_name: &str, room_manager: RoomManager, redis_url: &str, ) -> JoinHandle<()>
Starts a subscriber task that listens on Redis pub/sub and routes messages to the local room manager.
This spawns a background Tokio task that runs until the returned
tokio::task::JoinHandle is aborted.
Trait Implementations§
Source§impl Clone for RedisPubSub
impl Clone for RedisPubSub
Source§fn clone(&self) -> RedisPubSub
fn clone(&self) -> RedisPubSub
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for RedisPubSub
impl !RefUnwindSafe for RedisPubSub
impl Send for RedisPubSub
impl Sync for RedisPubSub
impl Unpin for RedisPubSub
impl UnsafeUnpin for RedisPubSub
impl !UnwindSafe for RedisPubSub
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request