close websocket on disconnect

This commit is contained in:
Evan Almloff committed 2022-06-10 19:18:02 -05:00
1 parent 1d29f66cfc
commit 0c4028ad52
1 file changed
+13 -3
+13 -3
View File
@@ -291,16 +291,23 @@ async fn hot_reload_handler(
ws.on_upgrade(|mut socket| async move { ws.on_upgrade(|mut socket| async move {
log::info!("🔥 Hot Reload WebSocket connected"); log::info!("🔥 Hot Reload WebSocket connected");
let mut rx = state.messages.subscribe(); let mut rx = state.messages.subscribe();
let hot_reload_handle = tokio::spawn(async move {
loop { loop {
let read_set_rsx = rx.recv(); let read_set_rsx = rx.recv();
let read_err = socket.recv(); let read_err = socket.recv();
tokio::select! { tokio::select! {
err = read_err => { err = read_err => {
if let Some(Ok(Message::Text(err))) = err { if let Some(Ok(err)) = err {
if let Message::Text(err) = err {
let error: RecompileReason = serde_json::from_str(&err).unwrap(); let error: RecompileReason = serde_json::from_str(&err).unwrap();
log::error!("{:?}", error); log::error!("{:?}", error);
state.update.send("reload".to_string()).unwrap(); if state.update.send("reload".to_string()).is_err() {
}; break;
}
}
} else {
break;
}
}, },
set_rsx = read_set_rsx => { set_rsx = read_set_rsx => {
if let Ok(rsx) = set_rsx { if let Ok(rsx) = set_rsx {
@@ -315,6 +322,9 @@ async fn hot_reload_handler(
} }
}; };
} }
});
hot_reload_handle.await.unwrap();
}) })
} }