From 427375e2bef72f827e42814f5770265598c4a5eb Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 08:19:22 -0500 Subject: parse the websocket message in the browser --- teleterm-web/src/lib.rs | 13 +++++++++++++ teleterm-web/src/protocol.rs | 7 +++++++ 2 files changed, 20 insertions(+) create mode 100644 teleterm-web/src/protocol.rs (limited to 'teleterm-web') diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 812845f..030ac45 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -1,5 +1,6 @@ mod model; mod prelude; +mod protocol; mod ws; use crate::prelude::*; @@ -53,6 +54,18 @@ fn update( } ws::WebSocketEvent::Message(msg) => { log::info!("{}: message: {:?}", id, msg); + let json = msg.data().as_string().unwrap(); + let msg: crate::protocol::Message = + serde_json::from_str(&json).unwrap(); + match msg { + crate::protocol::Message::TerminalOutput { data } => { + log::info!( + "{}: got bytes: {}", + id, + String::from_utf8_lossy(&data) + ); + } + } } ws::WebSocketEvent::Error(e) => { log::error!("{}: error: {:?}", id, e); diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs new file mode 100644 index 0000000..d9f3a8e --- /dev/null +++ b/teleterm-web/src/protocol.rs @@ -0,0 +1,7 @@ +// it's possible we should just consider pulling the real protocol out into a +// crate or something? but ideally in a way that doesn't require pulling in +// tokio +#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] +pub enum Message { + TerminalOutput { data: Vec }, +} -- cgit v1.2.3-54-g00ecf