}
}
+#[derive(Serialize)]
+enum Update {
+ TestCounter { value: usize },
+}
+
type TestCounter = BufReader<TestCounterInner>;
#[derive(Debug)]
struct TestCounterInner { next : usize, }
impl Read for TestCounterInner {
fn read(&mut self, buf: &mut [u8]) -> io::Result<usize> {
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())
// 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'
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]);
}