Expand description
§Subscription client
This crates supports subscribing to one or multiple channels. (s. Redis Pub/Sub).
A regular client can be turned to a Subscription in the following way.
let client = connection_handler
.connect(&mut stack, Some(&clock)).unwrap()
.subscribe(["first_channel".into(), "second_channel".into()])
.unwrap();
If the subscriptions fails, it’s recommended to close the connection, as a the state is undefined. A further reuse of the connection could cause subsequent errors.
§Receiving messages
Messages can be received using the receive()
method. Which returns Some(Message) in case a message is pending.
loop {
let message = client.receive().unwrap();
if let Some(message) = message {
assert_eq!("first_channel", core::str::from_utf8(&message.channel[..]).unwrap());
assert_eq!("example payload", core::str::from_utf8(&message.payload[..]).unwrap());
break;
}
}
§Unsubscribing
To leave a clean connection state, unsubscribe from all channels at the end.
client.unsubscribe().unwrap();
Note: unsubscribe()
is called automatically when the client is dropped
Structs§
- Message
- A published subscription message
- Subscription
- Client for handling subscriptions
Enums§
- Error
- Subscription errors