use simple_websockets::{Event, Responder}; use std::collections::HashMap; fn main() { let event_hub = simple_websockets::launch(8080).expect("failed to listen on port 8080"); let mut clients: HashMap = HashMap::new(); println!("Listening for websocket connection..."); loop { match event_hub.poll_event() { Event::Connect(client_id, responder) => { println!("A client connected with id #{}", client_id); // add their Responder to our `clients` map: clients.insert(client_id, responder); } Event::Disconnect(client_id) => { println!("Client #{} disconnected.", client_id); // remove the disconnected client from the clients map: clients.remove(&client_id); } Event::Message(client_id, message) => { println!("\nReceived a message from client #{}", client_id); let all_clients = clients.keys().collect::>(); for client in all_clients { if *client != client_id { println!("Sending message to client #{}", client); let responder = clients.get(client).unwrap(); responder.send(message.clone()); } } } } } }