leds/src/util/webserver.rs

36 lines
1.4 KiB
Rust

use std::net::TcpListener;
use std::thread;
use tungstenite::accept;
use util::pattern::*;
pub fn websocket(pattern: &mut Vec<Box<dyn Pattern>>) {
let server = TcpListener::bind("0.0.0.0:29999").unwrap();
for stream in server.incoming() {
thread::spawn (move || {
let mut websocket = accept(stream.unwrap()).unwrap();
loop {
let input = websocket.read_message().unwrap();
if input.is_text() {
let mul_string = input.to_text().unwrap_or("unit");
match mul_string.iter().cloned().map(parse_line).collect() {
Ok(patterns) => {
pattern = patterns;
let text = format!("Ok!\n\n{}", mul_string);
let msg = tungstenite::Message::from(text);
websocket.write_message(msg).unwrap();
}
Err(err) => {
println!("ret err {:?}", err);
let msg = tungstenite::Message::from(err);
websocket.write_message(msg).unwrap();
}
}
}
else {
let msg = tungstenite::Message::from("Not text");
websocket.write_message(msg).unwrap();
}
}
});
}
}