diff --git a/src/notifications/events.rs b/src/notifications/events.rs index 93bab262..314359e5 100644 --- a/src/notifications/events.rs +++ b/src/notifications/events.rs @@ -22,13 +22,20 @@ pub struct Auth { pub token: String, } +#[derive(Serialize, Deserialize, Debug, Clone)] +#[serde(untagged)] +pub enum Ping { + Binary(Vec), + Number(usize) +} + #[derive(Deserialize, Debug)] #[serde(tag = "type")] pub enum ServerboundNotification { Authenticate(Auth), BeginTyping { channel: String }, EndTyping { channel: String }, - Ping { data: Vec, responded: Option<()> }, + Ping { data: Ping, responded: Option<()> }, } #[derive(Serialize, Deserialize, Debug, Clone)] @@ -79,7 +86,7 @@ pub enum ClientboundNotification { channels: Vec, members: Vec, }, - Pong { data: Vec }, + Pong { data: Ping }, Message(Message), MessageUpdate { diff --git a/src/notifications/websocket.rs b/src/notifications/websocket.rs index 88dd5b59..6f615060 100644 --- a/src/notifications/websocket.rs +++ b/src/notifications/websocket.rs @@ -1,4 +1,5 @@ use crate::database::*; +use crate::notifications::events::Ping; use crate::util::variables::WS_HOST; use super::subscriptions; @@ -140,7 +141,7 @@ async fn accept(stream: TcpStream) { rmp_serde::decode::from_read::<&[u8], ServerboundNotification>(vec.as_slice()) .map_err(|e| e.to_string()) } - Message::Ping(vec) => Ok(ServerboundNotification::Ping { data: vec, responded: Some(()) }), + Message::Ping(vec) => Ok(ServerboundNotification::Ping { data: Ping::Binary(vec), responded: Some(()) }), _ => return Ok(()), };