2025-04-27 23:11:37 -04:00
|
|
|
use serde::{Serialize, Deserialize, de::DeserializeOwned};
|
|
|
|
|
2025-04-29 16:53:34 -04:00
|
|
|
#[derive(Serialize, Deserialize, PartialEq, Eq)]
|
|
|
|
pub enum PacketType {
|
|
|
|
/// A regular check to ensure the connection is still alive.
|
|
|
|
Ping,
|
|
|
|
}
|
|
|
|
|
2025-04-27 23:11:37 -04:00
|
|
|
#[derive(Serialize, Deserialize, PartialEq, Eq)]
|
|
|
|
pub enum SocketMethod {
|
|
|
|
/// Authentication and channel identification.
|
|
|
|
Headers,
|
|
|
|
/// A message was sent in the channel.
|
|
|
|
Message,
|
|
|
|
/// A message was deleted in the channel.
|
|
|
|
Delete,
|
2025-04-29 16:53:34 -04:00
|
|
|
/// Forward message from server to client. (Redis pubsub to ws)
|
|
|
|
Forward(PacketType),
|
2025-04-27 23:11:37 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Serialize, Deserialize)]
|
|
|
|
pub struct SocketMessage {
|
|
|
|
pub method: SocketMethod,
|
|
|
|
pub data: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl SocketMessage {
|
|
|
|
pub fn data<T: DeserializeOwned>(&self) -> T {
|
|
|
|
serde_json::from_str(&self.data).unwrap()
|
|
|
|
}
|
|
|
|
}
|