diff --git a/src/server/tokio_tungstenite_socket_proxy.rs b/src/server/tokio_tungstenite_socket_proxy.rs index 9494116..d3eae4b 100644 --- a/src/server/tokio_tungstenite_socket_proxy.rs +++ b/src/server/tokio_tungstenite_socket_proxy.rs @@ -3,7 +3,10 @@ use futures_util::{ stream::{SplitSink, SplitStream}, }; use tokio::net::TcpStream; -use tokio_tungstenite::{MaybeTlsStream, WebSocketStream, connect_async, tungstenite::Message}; +use tokio_tungstenite::{ + MaybeTlsStream, WebSocketStream, connect_async, + tungstenite::{Message, http::Request}, +}; use crate::settings::Result; @@ -22,14 +25,20 @@ impl ServerSocketProxyService for TokioTungsteniteSocketProxy { type Reciever = TokioTungsteniteSocketReciever; async fn connect(req: HttpRequest, connection: Connection) -> Result { - let url = format!( + let uri = format!( "{}://{}:{}{}", connection.protocol.replace("http", "ws"), connection.ip_address, connection.port, req.path ); - let (ws_stream, _) = connect_async(url).await?; + let mut request_builder = Request::builder().uri(uri); + + for (key, value) in req.headers { + request_builder = request_builder.header(key, value); + } + + let (ws_stream, _) = connect_async(request_builder.body(())?).await?; let (ses, stream) = ws_stream.split();