zero4rs 2.0.0

zero4rs is a powerful, pragmatic, and extremely fast web framework for Rust
Documentation
use actix::Message as ActixMessage;
use actix::Recipient;

use crate::websocket::devstreams::ConnectId;
use crate::websocket::devstreams::OutputMessage;
use crate::websocket::devstreams::OutputMessageType;

// WsConn 将此消息发送到大厅,表示“请让我加入”
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Connect {
    pub addr: Recipient<OutputMessage>,
    pub id: ConnectId,
}

// WsConn 将其发送到大厅,表示“请带我出去”
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Disconnect {
    pub id: ConnectId,
}

// 广播一条消息
#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Broadcast {
    pub ty: OutputMessageType,
    pub msg: String,
}

#[derive(ActixMessage)]
#[rtype(result = "()")]
pub struct Subscribe {
    pub id: ConnectId,
    pub channel: SubscribeChannel,
}

#[derive(serde::Serialize, serde::Deserialize, Clone, strum_macros::EnumString)]
#[strum(ascii_case_insensitive)]
pub enum SubscribeChannel {
    ServerTime,
    Startup,
}

impl std::fmt::Display for SubscribeChannel {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
        match self {
            SubscribeChannel::ServerTime => write!(f, "ServerTime"),
            SubscribeChannel::Startup => write!(f, "Startup"),
        }
    }
}