diff options
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 67 |
1 files changed, 4 insertions, 63 deletions
diff --git a/src/main.rs b/src/main.rs index fd76ec7..f2e9c56 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,12 @@ #[macro_use] extern crate rocket; mod database; +mod websocket; use rocket::serde::json::Json; use rocket::State; use std::sync::{Mutex, Arc}; use database::types::*; -use tungstenite::accept; struct SharedDB { @@ -159,70 +159,12 @@ fn rocket() -> _ { let websocketdb = Arc::clone(&database); let rocketdb = Arc::clone(&database); + // Websockets std::thread::spawn(move || { - let listen = std::net::TcpListener::bind("127.0.0.1:8001").unwrap(); - - loop { - for connection in listen.incoming() { - - let wsconnectiondb = Arc::clone(&websocketdb); - std::thread::spawn(move || { - let mut websocket = accept(connection.unwrap()).unwrap(); - let mut newest = 0; - - loop { - // TX - let mut db = wsconnectiondb.lock().unwrap(); - let local_newest = match db.get_message_newest_id() { - Some(n) => n.into(), - None => 0 - }; - drop(db); - - if local_newest > newest { - let m = serde_json::to_string(&WebSocketMessage::NewMessage).unwrap(); - websocket.write_message(tungstenite::Message::text(m)).unwrap(); - newest = local_newest; - } - - std::thread::sleep(std::time::Duration::from_millis(100)); - - // RX - // let _ = match websocket.read_message() { - // Ok(n) => n, - // Err(_) => {println!("closed"); break} - // }; - - // if msg.is_binary() { - // if msg.len() > 0 { - // match msg.into_data()[0..=1].into() { - // BinaryMessage::GetMessageNewestId => { - // let db = wsconnectiondb.lock().unwrap(); - // let m = db.get_message_newest_id(); - // drop(db); - - // let m = serde_json::to_string(&m).unwrap(); - // websocket.write_message(tungstenite::Message::text(m)).unwrap(); - // }, - // // Return error of unsupported data - // _ => (), - // } - // } else { - // // Return error of empty data - // websocket.write_message(msg).unwrap(); - // } - - // } else if msg.is_text() { - // println!("{}", msg.into_text().unwrap()); - // } - - } - - }); - } - } + websocket::websocket(websocketdb); }); + // Rocket rocket::build() .mount("/api", routes![ get_message, @@ -238,7 +180,6 @@ fn rocket() -> _ { get_message_list, set_user_data, set_user_status, - ]) .mount("/", routes![api_index]) .manage(SharedDB{sdb: rocketdb}) |