1extern crate cobalt;
3
4
5use cobalt::{
7 BinaryRateLimiter, Config, NoopPacketModifier, MessageKind, UdpSocket,
8 Server, ServerEvent
9};
10
11fn main() {
12
13 let mut server = Server::<
15 UdpSocket,
16 BinaryRateLimiter,
17 NoopPacketModifier
18
19 >::new(Config::default());
20
21 println!("[Server] Listening...");
23 server.listen("0.0.0.0:1234").expect("Failed to bind to socket.");
24
25 'main: loop {
26
27 while let Ok(event) = server.accept_receive() {
29 match event {
31 ServerEvent::Connection(id) => {
32 let conn = server.connection(&id).unwrap();
33 println!(
34 "[Server] Client {} ({}, {}ms rtt) connected.",
35 id.0,
36 conn.peer_addr(),
37 conn.rtt()
38 );
39
40 },
41 ServerEvent::Message(id, message) => {
42 let conn = server.connection(&id).unwrap();
43 println!(
44 "[Server] Message from client {} ({}, {}ms rtt): {:?}",
45 id.0,
46 conn.peer_addr(),
47 conn.rtt(),
48 message
49 );
50
51 },
52 ServerEvent::ConnectionClosed(id, _) | ServerEvent::ConnectionLost(id, _) => {
53 let conn = server.connection(&id).unwrap();
54 println!(
55 "[Server] Client {} ({}, {}ms rtt) disconnected.",
56 id.0,
57 conn.peer_addr(),
58 conn.rtt()
59 );
60 break 'main;
61 },
62 _ => {}
63 }
64 }
65
66 for (_, conn) in server.connections() {
68 conn.send(MessageKind::Instant, b"Hello from Server".to_vec());
69 }
70
71 server.send(true).is_ok();
75
76 }
77
78 println!("[Server] Shutting down...");
79
80 server.shutdown().ok();
82
83}
84