supabase_client_realtime/
lib.rs1pub mod callback;
26pub mod channel;
27pub mod client;
28pub mod error;
29pub(crate) mod presence;
30pub(crate) mod protocol;
31pub(crate) mod transport;
32pub mod types;
33
34pub use channel::{ChannelBuilder, RealtimeChannel};
36pub use client::RealtimeClient;
37pub use error::RealtimeError;
38pub use types::{
39 BroadcastConfig, ChannelState, ColumnInfo, JoinConfig, JoinPayload,
40 PostgresChangePayload, PostgresChangesEvent, PostgresChangesFilter, PresenceConfig,
41 PresenceDiff, PresenceEntry, PresenceMeta, PresenceState, RealtimeConfig,
42 ReconnectConfig, SubscriptionStatus,
43};
44
45use supabase_client_core::SupabaseClient;
46
47pub trait SupabaseClientRealtimeExt {
49 fn realtime(&self) -> Result<RealtimeClient, RealtimeError>;
53}
54
55impl SupabaseClientRealtimeExt for SupabaseClient {
56 fn realtime(&self) -> Result<RealtimeClient, RealtimeError> {
57 RealtimeClient::new(self.supabase_url(), self.api_key())
58 }
59}
60
61#[cfg(test)]
62mod tests {
63 use super::*;
64 use supabase_client_core::config::SupabaseConfig;
65
66 #[test]
67 fn test_realtime_extension_trait() {
68 let config = SupabaseConfig::new("http://localhost:54321", "test-key");
69 let client = SupabaseClient::new(config).unwrap();
70 let realtime = client.realtime();
71 assert!(realtime.is_ok());
72 let realtime = realtime.unwrap();
73 assert!(realtime.is_connected() == false);
74 }
75}