Crates.io | msgtrans |
lib.rs | msgtrans |
version | 0.1.6 |
source | src |
created_at | 2024-09-02 09:06:26.359645 |
updated_at | 2024-09-10 01:10:20.824143 |
description | Support for a variety of communication protocols such as TCP / QUIC / WebSocket, easy to create server and client network library. |
homepage | |
repository | https://github.com/zoujiaqing/msgtrans-rust |
max_upload_size | |
id | 1360315 |
size | 158,265 |
Using MsgTrans to create multiple protocol server.
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;
cargo run --example server
# for tcp
cargo run --example client_tcp
# for websocket
cargo run --example client_websocket
# for quic
cargo run --example client_quic
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365000 -nodes -subj "/CN=localhost"
+--------------------------------+
| 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: