2020-11-17 10:50:03 +00:00
|
|
|
use std::{
|
|
|
|
net::{TcpListener, TcpStream},
|
|
|
|
thread::spawn,
|
|
|
|
};
|
2017-01-31 18:22:28 +00:00
|
|
|
|
2019-08-26 17:00:41 +00:00
|
|
|
use log::*;
|
2023-03-22 23:15:53 +00:00
|
|
|
use tungstenite::{accept, handshake::HandshakeRole, Error, HandshakeError, Message, Result};
|
2017-03-08 09:50:13 +00:00
|
|
|
|
2017-07-25 07:47:17 +00:00
|
|
|
fn must_not_block<Role: HandshakeRole>(err: HandshakeError<Role>) -> Error {
|
2017-03-08 09:50:13 +00:00
|
|
|
match err {
|
|
|
|
HandshakeError::Interrupted(_) => panic!("Bug: blocking socket would block"),
|
|
|
|
HandshakeError::Failure(f) => f,
|
|
|
|
}
|
|
|
|
}
|
2017-01-31 18:22:28 +00:00
|
|
|
|
|
|
|
fn handle_client(stream: TcpStream) -> Result<()> {
|
2023-03-22 23:15:53 +00:00
|
|
|
let mut socket = accept(stream).map_err(must_not_block)?;
|
2020-01-13 21:22:42 +00:00
|
|
|
info!("Running test");
|
2017-01-31 18:22:28 +00:00
|
|
|
loop {
|
2023-05-27 12:03:44 +00:00
|
|
|
match socket.read()? {
|
2019-08-26 17:00:41 +00:00
|
|
|
msg @ Message::Text(_) | msg @ Message::Binary(_) => {
|
2023-05-27 12:03:44 +00:00
|
|
|
socket.send(msg)?;
|
2017-07-19 22:04:23 +00:00
|
|
|
}
|
2021-11-02 14:05:03 +00:00
|
|
|
Message::Ping(_) | Message::Pong(_) | Message::Close(_) | Message::Frame(_) => {}
|
2017-07-19 22:04:23 +00:00
|
|
|
}
|
2017-01-31 18:22:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
2018-01-21 16:36:48 +00:00
|
|
|
env_logger::init();
|
2017-01-31 18:22:28 +00:00
|
|
|
|
2019-05-16 23:30:41 +00:00
|
|
|
let server = TcpListener::bind("127.0.0.1:9002").unwrap();
|
2017-01-31 18:22:28 +00:00
|
|
|
|
|
|
|
for stream in server.incoming() {
|
2019-08-26 17:00:41 +00:00
|
|
|
spawn(move || match stream {
|
2020-11-17 10:50:03 +00:00
|
|
|
Ok(stream) => {
|
|
|
|
if let Err(err) = handle_client(stream) {
|
|
|
|
match err {
|
|
|
|
Error::ConnectionClosed | Error::Protocol(_) | Error::Utf8 => (),
|
|
|
|
e => error!("test: {}", e),
|
|
|
|
}
|
2020-01-13 21:22:42 +00:00
|
|
|
}
|
2020-11-17 10:50:03 +00:00
|
|
|
}
|
2020-01-13 21:22:42 +00:00
|
|
|
Err(e) => error!("Error accepting stream: {}", e),
|
2017-01-31 18:22:28 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|