half baked bollocks
This commit is contained in:
parent
fdf781ff02
commit
19479263b8
|
@ -43,6 +43,7 @@ impl<T: Adaptor, U: Driver> Server<T, U> {
|
|||
let rx = self.adaptor.run();
|
||||
let tx = self.driver.run();
|
||||
let webaddr = ([127, 0, 0, 1], 3000).into();
|
||||
//let (websocket_tx, websocket_rx) =
|
||||
log::info!("Webserver starting on: {}", webaddr);
|
||||
let web = WebServer::run(webaddr);
|
||||
loop {
|
||||
|
|
22
src/web.rs
22
src/web.rs
|
@ -1,5 +1,7 @@
|
|||
use crate::TallyState;
|
||||
use futures::stream;
|
||||
use futures::sync::oneshot::{channel, Sender};
|
||||
use futures::sync::mpsc::Receiver;
|
||||
use futures::sync::oneshot;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::thread;
|
||||
use typed_html::dom::DOMTree;
|
||||
|
@ -22,12 +24,12 @@ fn build_template() -> DOMTree<String> {
|
|||
}
|
||||
|
||||
pub struct WebServer {
|
||||
shutdown_chan: Sender<()>,
|
||||
shutdown_chan: oneshot::Sender<()>,
|
||||
shutdown_mutex: Arc<Mutex<()>>,
|
||||
}
|
||||
|
||||
impl WebServer {
|
||||
pub fn run(addr: std::net::SocketAddr) -> WebServer {
|
||||
pub fn run(addr: std::net::SocketAddr, tally_rx: Receiver<TallyState>) -> WebServer {
|
||||
// todo: not have the damn js inline in the func
|
||||
const JS: &'static str = r#"
|
||||
var sock = new WebSocket("ws://" + window.location.host + "/ws");
|
||||
|
@ -37,7 +39,7 @@ sock.onmessage = function (e) {
|
|||
sock.onopen = function (e) {
|
||||
sock.send("Hello!");
|
||||
}"#;
|
||||
let (shutdown_tx, shutdown_rx) = channel::<()>();
|
||||
let (shutdown_tx, shutdown_rx) = oneshot::channel::<()>();
|
||||
|
||||
let shutdown_mutex = Arc::new(Mutex::new(()));
|
||||
let thread_shutdown_mutex = Arc::clone(&shutdown_mutex);
|
||||
|
@ -48,11 +50,15 @@ sock.onopen = function (e) {
|
|||
|
||||
let websocket = warp::path("ws").and(warp::ws2()).map(|ws: warp::ws::Ws2| {
|
||||
ws.on_upgrade(|websocket| {
|
||||
let (tx, rx) = websocket.split();
|
||||
let (tx, _) = websocket.split();
|
||||
//stream::once::<Message, _>(Ok(Message::text("Hello")))
|
||||
rx.forward(tx).map(|_| ()).map_err(|e| {
|
||||
log::error!("Websocket error: {}", e);
|
||||
})
|
||||
tally_rx
|
||||
.map(|state| Message::text(format!("{}", state)))
|
||||
.forward(tx)
|
||||
.map(|_| ())
|
||||
.map_err(|e| {
|
||||
log::error!("Websocket error: {}", e);
|
||||
})
|
||||
})
|
||||
});
|
||||
let script = warp::path("script.js").map(|| JS);
|
||||
|
|
Loading…
Reference in New Issue