use serde::{Serialize, Deserialize}; use serde_json::Value; #[derive(Deserialize, Clone, Debug)] #[serde(tag = "type")] pub enum ClientMessage { #[serde(rename = "frame")] Frame { frame: u64, }, #[serde(rename = "input")] Input { data: Value, frame: u64, }, #[serde(rename = "requeststate")] RequestState { connection: Option, frame: u64, }, #[serde(rename = "state")] State { state: Value, frame: u64, }, #[serde(rename = "ping")] Ping { frame: u64, }, } #[derive(Serialize, Clone, Debug)] #[serde(tag = "type")] pub enum ServerMessage { #[serde(rename = "framerequest")] FrameRequest, #[serde(rename = "connections")] Connections { connections: Vec, added: Option, removed: Option, id: usize, frame: u64, }, #[serde(rename = "input")] Input { data: Value, frame: u64, connection: usize, }, #[serde(rename = "requeststate")] RequestState { frame: u64, }, #[serde(rename = "state")] State { state: Value, frame: u64, connection: Option, }, #[serde(rename = "pong")] Pong { frame: u64, }, #[serde(rename = "error")] Error { error: String, }, }