aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs67
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})