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
+32 -22
+32 -22
View File
@@ -291,30 +291,40 @@ 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();
loop { let hot_reload_handle = tokio::spawn(async move {
let read_set_rsx = rx.recv(); loop {
let read_err = socket.recv(); let read_set_rsx = rx.recv();
tokio::select! { let read_err = socket.recv();
err = read_err => { tokio::select! {
if let Some(Ok(Message::Text(err))) = err { err = read_err => {
let error: RecompileReason = serde_json::from_str(&err).unwrap(); if let Some(Ok(err)) = err {
log::error!("{:?}", error); if let Message::Text(err) = err {
state.update.send("reload".to_string()).unwrap(); let error: RecompileReason = serde_json::from_str(&err).unwrap();
}; log::error!("{:?}", error);
}, if state.update.send("reload".to_string()).is_err() {
set_rsx = read_set_rsx => { break;
if let Ok(rsx) = set_rsx{ }
if socket }
.send(Message::Text(serde_json::to_string(&rsx).unwrap())) } else {
.await
.is_err()
{
break; break;
}; }
},
set_rsx = read_set_rsx => {
if let Ok(rsx) = set_rsx {
if socket
.send(Message::Text(serde_json::to_string(&rsx).unwrap()))
.await
.is_err()
{
break;
};
}
} }
} };
}; }
} });
hot_reload_handle.await.unwrap();
}) })
} }