leds/src/util/webserver.rs

38 lines
1.5 KiB
Rust
Raw Normal View History

2021-12-29 01:10:29 +00:00
use std::net::TcpListener;
use std::thread;
use tungstenite::accept;
2021-12-29 01:20:48 +00:00
use crate::util::pattern;
2021-12-29 01:10:29 +00:00
2021-12-29 01:20:48 +00:00
pub fn websocket(pattern: &mut Vec<Box<dyn pattern::Pattern>>) {
2021-12-29 01:10:29 +00:00
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() {
2021-12-29 01:20:48 +00:00
let string = input.to_text().unwrap_or("unit");
let mul_string = pattern::format_multiline(string);
match mul_string.iter().cloned().map(pattern::parse_line).collect() {
2021-12-29 01:10:29 +00:00
Ok(patterns) => {
2021-12-29 01:20:48 +00:00
*pattern = patterns;
let text = format!("Ok!\n\n{}", string);
2021-12-29 01:10:29 +00:00
let msg = tungstenite::Message::from(text);
websocket.write_message(msg).unwrap();
}
Err(err) => {
println!("ret err {:?}", err);
2021-12-29 01:20:48 +00:00
let msg = tungstenite::Message::from(err.to_string());
2021-12-29 01:10:29 +00:00
websocket.write_message(msg).unwrap();
}
}
}
else {
let msg = tungstenite::Message::from("Not text");
websocket.write_message(msg).unwrap();
}
}
});
}
2021-12-29 01:20:48 +00:00
}