wrym 0.1.0

Cross-platform, lightweight networking
Documentation
use std::{thread::sleep, time::Duration};

use bincode::{deserialize, serialize};
use wrym::{
    server::{Server, ServerConfig, ServerEvent},
    transport::server::Transport,
};

const SERVER_ADDR: &str = "127.0.0.1:8080";

fn main() {
    let transport = Transport::new(SERVER_ADDR);
    let mut server = Server::new(transport, ServerConfig::default());

    println!("Server is running on {}", SERVER_ADDR);

    loop {
        server.poll();

        while let Some(event) = server.recv_event() {
            match event {
                ServerEvent::ClientConnected(addr) => {
                    println!("New connection from client {}", addr);
                }
                ServerEvent::ClientDisconnected(addr) => {
                    println!("Lost connection from client {}", addr);
                }
                ServerEvent::MessageReceived(addr, bytes) => {
                    let msg = deserialize::<String>(&bytes).unwrap();
                    println!("Message received from client {}: {:?}", addr, msg);

                    server.broadcast(
                        &serialize(&format!("Received '{}' from client {}", msg, addr)).unwrap(),
                    );
                }
            }
        }

        sleep(Duration::from_millis(10));
    }
}