aboutsummaryrefslogtreecommitdiffstats
path: root/teleterm-web
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2019-11-22 08:19:22 -0500
committerJesse Luehrs <doy@tozt.net>2019-11-22 08:19:22 -0500
commit427375e2bef72f827e42814f5770265598c4a5eb (patch)
tree14bdc24e92e75d44b28c20f8d682bc588e42c423 /teleterm-web
parent6bb00f299cf553fd7f143f0bc3c85bd6107cc7aa (diff)
downloadteleterm-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.rs13
-rw-r--r--teleterm-web/src/protocol.rs7
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> },
+}