# msgtrans-rust **Repository Path**: jbakwd/msgtrans-rust ## Basic Information - **Project Name**: msgtrans-rust - **Description**: MsgTrans是一个可同时监听多协议的网络框架,消息头采用二进制协议,兼容 Rust / D语言 / Typescript / C++ / Java 等语言,业务逻辑层只需要编写 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://www.oschina.net/p/msgtrans-rust - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-09-12 - **Last Updated**: 2024-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MsgTrans for rust ## Server sample code Using MsgTrans to create multiple protocol server. ```rust let mut server = MessageTransportServer::new(); // Add TCP channel server.add_channel(TcpServerChannel::new("0.0.0.0", 9001)).await; // Add WebSocket channel server.add_channel(WebSocketServerChannel::new("0.0.0.0", 9002, "/ws")).await; // Add QUIC channel server.add_channel(QuicServerChannel::new( "0.0.0.0", 9003, "certs/cert.pem", "certs/key.pem", )).await; // set some callback handler for server server.start().await; ``` ## Run example for server ```bash cargo run --example server ``` ## Run example for client ```bash # for tcp cargo run --example client_tcp # for websocket cargo run --example client_websocket # for quic cargo run --example client_quic ``` ## Generate cert and key for test ```bash openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365000 -nodes -subj "/CN=localhost" ``` ## Packet Structure ```text +--------------------------------+ | Packet Header | | +--------------------------+ | | | Message ID (4 bytes) | | | +--------------------------+ | | | Message Length (4 bytes)| | | +--------------------------+ | | | Compression Type (1 byte)| | | +--------------------------+ | | | Extend Length (4 bytes) | | | +--------------------------+ | | | Reserved (3 bytes) | | | +--------------------------+ | +--------------------------------+ | v +--------------------------------+ | Extended Header Content | | (variable length, Extend | | Length specifies size) | +--------------------------------+ | v +--------------------------------+ | Payload Content | | (variable length, Message | | Length specifies size) | +--------------------------------+ ``` Structure Explanation: 1. Header Content: Contains fixed-length header information, including Message ID, Message Length, Compression Type, and Extend Length. 2. Extended Header Content: Variable-length extended header content, with its size specified by the Extend Length field. 3. Payload Content: Variable-length payload content, with its size specified by the Message Length field.