diff options
author | Jesse Luehrs <doy@tozt.net> | 2019-11-22 08:19:22 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2019-11-22 08:19:22 -0500 |
commit | 427375e2bef72f827e42814f5770265598c4a5eb (patch) | |
tree | 14bdc24e92e75d44b28c20f8d682bc588e42c423 /teleterm-web | |
parent | 6bb00f299cf553fd7f143f0bc3c85bd6107cc7aa (diff) | |
download | teleterm-427375e2bef72f827e42814f5770265598c4a5eb.tar.gz teleterm-427375e2bef72f827e42814f5770265598c4a5eb.zip |
parse the websocket message in the browser
Diffstat (limited to 'teleterm-web')
-rw-r--r-- | teleterm-web/src/lib.rs | 13 | ||||
-rw-r--r-- | teleterm-web/src/protocol.rs | 7 |
2 files changed, 20 insertions, 0 deletions
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<u8> }, +} |