#[derive(WebSocketMessage)]Expand description
Derives message conversion methods for custom types.
This derive macro automatically implements into_message() and from_message()
methods for your type, allowing easy conversion between your custom types and
WebSocket messages.
§Requirements
The type must implement:
serde::Serialize(forinto_message())serde::Deserialize(forfrom_message())
§Generated Methods
§into_message(&self) -> wsforge::Message
Converts the type into a WebSocket text message containing JSON.
§from_message(msg: wsforge::Message) -> Result<Self, serde_json::Error>
Parses a WebSocket message as JSON into your type.
§Examples
§Basic Usage
use wsforge_macros::WebSocketMessage;
use serde::{Deserialize, Serialize};
#[derive(WebSocketMessage, Serialize, Deserialize)]
struct ChatMessage {
username: String,
text: String,
}
let chat = ChatMessage {
username: "Alice".to_string(),
text: "Hello!".to_string(),
};
// Convert to message
let msg = chat.into_message();
// Parse from message
let parsed = ChatMessage::from_message(msg).unwrap();§With Nested Types
use wsforge_macros::WebSocketMessage;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct User {
id: u64,
name: String,
}
#[derive(WebSocketMessage, Serialize, Deserialize)]
struct UserMessage {
user: User,
action: String,
}§Error Handling
use wsforge_macros::WebSocketMessage;
use wsforge_core::prelude::*;
use serde::{Deserialize, Serialize};
#[derive(WebSocketMessage, Serialize, Deserialize)]
struct Request {
command: String,
}
match Request::from_message(msg) {
Ok(req) => println!("Command: {}", req.command),
Err(e) => eprintln!("Parse error: {}", e),
}