From 5dfabf794891afd558182faeda9023ad3cd29413 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 22 Nov 2019 11:15:45 -0500 Subject: handle streamer disconnects --- teleterm-web/src/lib.rs | 4 ++++ teleterm-web/src/model.rs | 4 ++++ teleterm-web/src/protocol.rs | 1 + 3 files changed, 9 insertions(+) (limited to 'teleterm-web') diff --git a/teleterm-web/src/lib.rs b/teleterm-web/src/lib.rs index 118ab2f..2ff1514 100644 --- a/teleterm-web/src/lib.rs +++ b/teleterm-web/src/lib.rs @@ -62,6 +62,10 @@ fn update( crate::protocol::Message::TerminalOutput { data } => { model.process(&data); } + crate::protocol::Message::Disconnected => { + model.disconnect_watch(); + orders.perform_cmd(model.list()); + } } } ws::WebSocketEvent::Error(e) => { diff --git a/teleterm-web/src/model.rs b/teleterm-web/src/model.rs index f83036b..dfaccc8 100644 --- a/teleterm-web/src/model.rs +++ b/teleterm-web/src/model.rs @@ -60,6 +60,10 @@ impl Model { self.watch_conn.is_some() } + pub fn disconnect_watch(&mut self) { + self.watch_conn = None; + } + pub fn process(&mut self, bytes: &[u8]) { if let Some(conn) = &mut self.watch_conn { conn.term.process(bytes); diff --git a/teleterm-web/src/protocol.rs b/teleterm-web/src/protocol.rs index d9f3a8e..af40891 100644 --- a/teleterm-web/src/protocol.rs +++ b/teleterm-web/src/protocol.rs @@ -4,4 +4,5 @@ #[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize)] pub enum Message { TerminalOutput { data: Vec }, + Disconnected, } -- cgit v1.2.3-54-g00ecf