final fix

migrate
prplV 2025-06-05 16:27:22 +03:00
parent da276b034f
commit 196280f783
1 changed files with 10 additions and 11 deletions

View File

@ -5,6 +5,7 @@ use axum::{
}, },
response::IntoResponse, response::IntoResponse,
routing::get, routing::get,
routing::on,
Router, Router,
}; };
use std::{ use std::{
@ -61,8 +62,10 @@ async fn hello(
} }
async fn handle_socket(mut ws: WebSocket, state: AppState) { async fn handle_socket(mut ws: WebSocket, state: AppState) {
// Подключаемся к Unix-сокету
tracing::info!("handle websocket"); tracing::info!("handle websocket");
let ws_receiver = tokio::spawn(async move {
while let Some(Ok(msg)) = ws.recv().await {
let mut unix_socket = match UnixStream::connect(&state.socket_path).await { let mut unix_socket = match UnixStream::connect(&state.socket_path).await {
Ok(socket) => socket, Ok(socket) => socket,
Err(e) => { Err(e) => {
@ -71,10 +74,6 @@ async fn handle_socket(mut ws: WebSocket, state: AppState) {
return; return;
} }
}; };
// Отправляем сообщения из WS → Unix
let ws_receiver = tokio::spawn(async move {
while let Some(Ok(msg)) = ws.recv().await {
if let Message::Text(text) = msg { if let Message::Text(text) = msg {
if let Err(e) = unix_socket.write_all(text.as_bytes()).await { if let Err(e) = unix_socket.write_all(text.as_bytes()).await {
eprintln!("Failed to write to Unix socket: {}", e); eprintln!("Failed to write to Unix socket: {}", e);
@ -94,5 +93,5 @@ async fn handle_socket(mut ws: WebSocket, state: AppState) {
} }
}); });
let _ = ws_receiver.await; // Дожидаемся завершения задачи let _ = ws_receiver.await;
} }