Added headers for web sockets
This commit is contained in:
@@ -3,7 +3,10 @@ use futures_util::{
|
|||||||
stream::{SplitSink, SplitStream},
|
stream::{SplitSink, SplitStream},
|
||||||
};
|
};
|
||||||
use tokio::net::TcpStream;
|
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;
|
use crate::settings::Result;
|
||||||
|
|
||||||
@@ -22,14 +25,20 @@ impl ServerSocketProxyService for TokioTungsteniteSocketProxy {
|
|||||||
type Reciever = TokioTungsteniteSocketReciever;
|
type Reciever = TokioTungsteniteSocketReciever;
|
||||||
|
|
||||||
async fn connect(req: HttpRequest, connection: Connection) -> Result<Self> {
|
async fn connect(req: HttpRequest, connection: Connection) -> Result<Self> {
|
||||||
let url = format!(
|
let uri = format!(
|
||||||
"{}://{}:{}{}",
|
"{}://{}:{}{}",
|
||||||
connection.protocol.replace("http", "ws"),
|
connection.protocol.replace("http", "ws"),
|
||||||
connection.ip_address,
|
connection.ip_address,
|
||||||
connection.port,
|
connection.port,
|
||||||
req.path
|
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();
|
let (ses, stream) = ws_stream.split();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user