use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
#[non_exhaustive]
pub enum ClientMessage {
Pong,
Subscribe {
entity: String,
#[serde(default = "default_event_filter")]
event: String,
#[serde(default)]
filter: Option<String>,
},
Unsubscribe {
entity: String,
},
}
fn default_event_filter() -> String {
"*".to_owned()
}
#[derive(Debug, Clone, Serialize)]
#[serde(tag = "type", rename_all = "snake_case")]
#[non_exhaustive]
pub enum ServerMessage {
Connected {
connection_id: String,
},
Ping,
TokenExpired,
Subscribed {
entity: String,
},
Unsubscribed {
entity: String,
},
Error {
message: String,
},
}
impl ServerMessage {
pub fn to_json(&self) -> serde_json::Result<String> {
serde_json::to_string(self)
}
}