final fix
parent
da276b034f
commit
196280f783
|
|
@ -5,6 +5,7 @@ use axum::{
|
|||
},
|
||||
response::IntoResponse,
|
||||
routing::get,
|
||||
routing::on,
|
||||
Router,
|
||||
};
|
||||
use std::{
|
||||
|
|
@ -61,20 +62,18 @@ async fn hello(
|
|||
}
|
||||
|
||||
async fn handle_socket(mut ws: WebSocket, state: AppState) {
|
||||
// Подключаемся к Unix-сокету
|
||||
tracing::info!("handle websocket");
|
||||
let mut unix_socket = match UnixStream::connect(&state.socket_path).await {
|
||||
Ok(socket) => socket,
|
||||
Err(e) => {
|
||||
eprintln!("Failed to connect to Unix socket: {}", e);
|
||||
let _ = ws.send(Message::Text("ERROR: Unix socket connection failed".into())).await;
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
// Отправляем сообщения из WS → Unix
|
||||
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 {
|
||||
Ok(socket) => socket,
|
||||
Err(e) => {
|
||||
eprintln!("Failed to connect to Unix socket: {}", e);
|
||||
let _ = ws.send(Message::Text("ERROR: Unix socket connection failed".into())).await;
|
||||
return;
|
||||
}
|
||||
};
|
||||
if let Message::Text(text) = msg {
|
||||
if let Err(e) = unix_socket.write_all(text.as_bytes()).await {
|
||||
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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue