use std::{sync::mpsc::channel, thread::spawn}; use app::App; use eframe::egui::{self}; use tungstenite::{connect, Message}; mod app; fn main() { let address = std::env::args().nth(1).expect("No url given!"); if let Ok(ws) = connect(address) { let (mut socket, _) = ws; let (tx, rx) = channel(); spawn(move || loop { let message = socket.read_message(); if let Ok(message) = message { if message.to_string() == "__PING__" { socket .write_message(Message::Text("__PONG__".to_string())) .expect("Failed to respond to ping! Did the WebSocket server die?"); } else { tx.send(message) .expect("Failed to send message to channel! (This shouldn't be possible)"); } } }); eframe::run_native( "Log Viewer", eframe::NativeOptions::default(), Box::new(|cc| { let mut fonts = egui::FontDefinitions::default(); fonts.font_data.iter_mut().for_each(|font| { font.1.tweak.scale = 2.0; }); cc.egui_ctx.set_fonts(fonts); Box::new(App::new(rx)) }), ); } else { panic!("Could not connect to websocket!"); } }