close websocket on disconnect
This commit is contained in:
1 parent
1d29f66cfc
commit
0c4028ad52
1 file changed
+32
-22
+32
-22
@@ -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();
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user