1use std::{ 2 io::{BufRead, BufReader, Write}, 3 net::TcpListener, 4}; 5 6use quad_snd::*; 7 8const CLICK: &[u8] = include_bytes!("./sound.ogg"); 9 10fn main() { 11 let ctx = AudioContext::new(); 12 let click = Sound::load(&ctx, CLICK); 13 14 let port = std::env::var("PORT") 15 .ok() 16 .and_then(|p| p.parse::<u16>().ok()) 17 .unwrap_or(8668); 18 let listener = TcpListener::bind(("0.0.0.0", port)).expect("cant bind"); 19 20 for stream in listener.incoming() { 21 let Ok(mut stream) = stream else { 22 continue; 23 }; 24 click.play(&ctx, PlaySoundParams::default()); 25 // exhaust connection to not get "connection reset by peer" 26 BufReader::new(&stream) 27 .lines() 28 .flatten() 29 .take_while(|line| !line.is_empty()) 30 .for_each(drop); 31 // this never "fails" 32 let response = "HTTP/1.1 200 OK\r\n\r\n"; 33 let _ = stream.write_all(response.as_bytes()); 34 } 35}