implemented Ping Message response and some fixes

This commit is contained in:
Sebastian Moser
2023-04-18 18:21:56 +02:00
parent 79f58e671e
commit e1e2e576e2
2 changed files with 9 additions and 8 deletions

View File

@@ -241,7 +241,7 @@ pub async fn run_server(args: Vec<String>) {
// the update handling task
let update_mutexes = mutexes.clone();
tokio::spawn(async move {
proto::update_thread(update_rx, update_mutexes);
proto::update_thread(update_rx, update_mutexes).await.handle().extra_msg("update thread crashed").is_critical();
});
@@ -372,6 +372,9 @@ async fn handle_websocket_connection(
proto::MizeMessage::Bin(bin_msg) => {
socket_tx.send(Message::Binary(bin_msg.raw)).await;
}
proto::MizeMessage::Pong() => {
socket_tx.send(Message::Pong(Vec::new())).await;
}
}
}
});
@@ -475,11 +478,7 @@ async fn handle_websocket_connection(
Message::Ping(_) => {
let err = MizeError::new(11)
.extra_msg("unhandeld WebSocket-Message type: Ping")
.handle();
msg_tx.send(proto::MizeMessage::Json(err.to_json_message())).await;
msg_tx.send(MizeMessage::Pong());
},

View File

@@ -32,6 +32,7 @@ use serde::{Serialize, Deserialize};
pub enum MizeMessage {
Json(JsonMessage),
Bin(BinMessage),
Pong(),
}
@@ -160,7 +161,6 @@ pub struct UpdateMessage {
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct Delta {
#[serde(flatten)]
pub delta: Vec<(Path, JsonValue)>,
}
@@ -386,12 +386,14 @@ pub async fn handle_json_msg(msg: JsonMessage, origin: Peer, mutexes: Mutexes) -
}
pub async fn handle_update(update: Update, origin: Peer, mutexes: Mutexes) -> Result<(), MizeError> {
mutexes.update_tx.send((update, origin));
mutexes.update_tx.send((update, origin)).await.map_err(|err| MizeError::new(11).extra_msg(format!("From SendError: {}", err)));
Ok(())
}
pub async fn update_thread(mut update_rx: mpsc::Receiver<(Update, Peer)>, mutexes: Mutexes) -> Result<(), MizeError> {
while let Some((update, origin)) = update_rx.recv().await {
println!("UPDATE: {:?}", update.iter().next().unwrap().0);
println!("DELTA: {:?}", update.iter().next().unwrap().1);
//TODO: run update code from modules and types
let itemstore = mutexes.itemstore.lock().await;