From fff334f18d94cc738cb3b637bff4c2a8faede7ec Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 14 Jun 2020 18:54:14 +0100 Subject: [PATCH] updates in json --- TODO | 1 - src/bin/server.rs | 10 +++++++++- templates/script.js | 10 +++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 8bc80239..0ce6a99b 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,3 @@ -updates in json client ? struct ? instance struct token in main url diff --git a/src/bin/server.rs b/src/bin/server.rs index c592d5c2..f72aed00 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -35,13 +35,21 @@ impl<'r> FromParam<'r> for CheckedResourceLeaf { } } +#[derive(Serialize)] +enum Update { + TestCounter { value: usize }, +} + type TestCounter = BufReader; #[derive(Debug)] struct TestCounterInner { next : usize, } impl Read for TestCounterInner { fn read(&mut self, buf: &mut [u8]) -> io::Result { thread::sleep(Duration::from_millis(500)); - let data = format!("data: {}\n\n", self.next); + let message = Update::TestCounter { value : self.next }; + let data = serde_json::to_string(&message)?; + let data = format!("data: {}\n\n", &data); + // eprintln!("want to return into &[;{}] {:?}", buf.len(), &data); self.next += 1; buf[0..data.len()].copy_from_slice(data.as_bytes()); Ok(buf.len()) diff --git a/templates/script.js b/templates/script.js index 9efe273d..50ce4be2 100644 --- a/templates/script.js +++ b/templates/script.js @@ -2,6 +2,8 @@ // xxx deployment note: need a whole bunch of domains for SSE conn limit +messages = Object(); + status_node = document.getElementById('status'); status_node.innerHTML = 'js-done' @@ -64,7 +66,13 @@ function drag_cancel() { window.removeEventListener('mouseup', drag_mouseup, true); } +messages.TestCounter = function(data) { + status_node.innerHTML = data.value; +} + es = new EventSource("updates"); es.onmessage = function(event) { - status_node.innerHTML = event.data; + var j = JSON.parse(event.data); + var k = Object.keys(j)[0]; + messages[k](j[k]); } -- 2.30.2