fix: Handle the websocet in handle_socket itself #34

Manually merged
awiteb merged 1 commit from awiteb/fix-multi-spawn into master 2024-07-28 07:44:01 +02:00 AGit

View file

@ -148,38 +148,33 @@ async fn handle_socket(
// TODO: Send the incoming chat request to the user, while they are offline. // TODO: Send the incoming chat request to the user, while they are offline.
// This after adding last_login col to the user table // This after adding last_login col to the user table
let fut = async move { while let Some(Ok(msg)) = user_ws_receiver.next().await {
while let Some(Ok(msg)) = user_ws_receiver.next().await { match handle_ws_msg(msg, &nonce_cache, &user_shared_secret).await {
match handle_ws_msg(msg, &nonce_cache, &user_shared_secret).await { Ok(event) => {
Ok(event) => { if let Some(server_event) =
if let Some(server_event) = handle_events(event, &db_conn, &conn_id, user.as_ref()).await
handle_events(event, &db_conn, &conn_id, user.as_ref()).await {
{ if let Err(err) = sender
if let Err(err) = sender.unbounded_send(Ok(server_event .unbounded_send(Ok(server_event.sign(&user_shared_secret).as_ref().into()))
.sign(&user_shared_secret)
.as_ref()
.into()))
{
log::error!("Websocket Error: {err}");
break;
}
};
}
Err(err) => {
if let Err(err) = sender.unbounded_send(Ok(ServerEvent::from(err)
.sign(&user_shared_secret)
.as_ref()
.into()))
{ {
log::error!("Websocket Error: {err}"); log::error!("Websocket Error: {err}");
break; break;
}; }
} };
}; }
} Err(err) => {
user_disconnected(&db_conn, &conn_id, &user_public_key, user).await; if let Err(err) = sender.unbounded_send(Ok(ServerEvent::from(err)
}; .sign(&user_shared_secret)
tokio_spawn(fut); .as_ref()
.into()))
{
log::error!("Websocket Error: {err}");
break;
};
}
};
}
user_disconnected(&db_conn, &conn_id, &user_public_key, user).await;
} }
/// Handle websocket msg /// Handle websocket msg