1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//! RustWave
//!
//! A Lightweight async event-driven WebSocket framework for Rust.
//!
//! Features:
//! - Async event-driven WebSocket server and client.
//! - Rooms.
//! - Broadcasts.
//! - Typed Payloads.
//! - Easy to use.
//! - Async handlers powered by Tokio.
//!
//!
//!
//! Example Server usage:
//! ```no_run
//! use rustwave::{Server, Result};
//!
//! #[tokio::main]
//! async fn main() -> Result<()> {
//! let server = Server::bind("127.0.0.1:8080");
//!
//! // Events on the root namespace("/")
//! server.on("message", |data, ctx| async move {
//! println!("Client {} say: {}", ctx.get_socket_id(), data);
//! });
//!
//! server.run().await?;
//! Ok(())
//! }
//! ```
//!
//! Example Client usage:
//! ```no_run
//! use rustwave::{Client, Result};
//!
//! #[tokio::main]
//! async fn main() -> Result<()> {
//! let client = Client::connect("ws://127.0.0.1:8080").await?;
//! client.on("message", |data| async move {
//! println!("Client got message: {}", data);
//! });
//! client.emit("message", "Hello Server!".to_string()).await?;
//! client.wait().await;
//!
//! Ok(())
//! }
//! ```
//!
//! RustWave provides an event-based API for building real-time applications.
//!
//! # Benchmark
//!
//! ## Test Environment
//! - CPU: Intel(R) Core(TM) i3-3220 CPU @ 3.30GHz
//! - RAM: 4GB
//! - OS: Fedora Linux
//! - Rust Version: 1.94.0
//! - Build: `cargo run --release`
//!
//! ## Echo Benchmark
//!
//! Client: 10,000
//! Messages per client: 100
//! Total Messages: 1,000,000
//! Test Type: Echo
//!
//! ## Test Result
//! Message loss: 0
//! Total time: 8.88s
//! Throughput: **112,587 msgs/sec**
//!
//!
pub use Client;
pub use ;
pub use PeerContext;
pub use Namespace;
pub use Server;
pub use BroadcastBuilder;
pub use Payload;