WebSocketMessage

Derive Macro WebSocketMessage 

Source
#[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 (for into_message())
  • serde::Deserialize (for from_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),
}