在Rust中使用websocket时,有没有办法通过代理进行连接?

在Rust中使用websocket时,有没有办法通过代理进行连接?,websocket,rust,proxy,socks,Websocket,Rust,Proxy,Socks,使用reqwest,您可以使用如下代理服务器: let client = reqwest::Client::builder()? .proxy(reqwest::Proxy::http("https://my.proxy.local:1080")?) .build()?; extern crate futures; extern crate tokio; extern crate websocket; use websocket::Message; use

使用reqwest,您可以使用如下代理服务器:

let client = reqwest::Client::builder()?
    .proxy(reqwest::Proxy::http("https://my.proxy.local:1080")?)
    .build()?;
extern crate futures;
extern crate tokio;
extern crate websocket;

use websocket::Message;
use websocket::result::WebSocketError;
use websocket::{ClientBuilder, OwnedMessage};
use websocket::header::{Headers, Authorization, Basic};
use websocket::futures::{Future, Stream, Sink};
use tokio_core::reactor::Core;

const CONNECTION: &'static str = "wss://some.remote.host.example.org:443/";

let mut core = Core::new()?;
let client = ClientBuilder::new(CONNECTION)?
   .async_connect_secure(None)  
   .and_then(|(msg, _)| match msg {
       Some(OwnedMessage::Text(response_txt)) => Ok(response_txt),
       _ => Err(WebSocketError::ProtocolError(UNSUPPORTED_MSG_ERR)),
   });

let response_message = core.run(client)?;
我使用的websocket如下所示:

let client = reqwest::Client::builder()?
    .proxy(reqwest::Proxy::http("https://my.proxy.local:1080")?)
    .build()?;
extern crate futures;
extern crate tokio;
extern crate websocket;

use websocket::Message;
use websocket::result::WebSocketError;
use websocket::{ClientBuilder, OwnedMessage};
use websocket::header::{Headers, Authorization, Basic};
use websocket::futures::{Future, Stream, Sink};
use tokio_core::reactor::Core;

const CONNECTION: &'static str = "wss://some.remote.host.example.org:443/";

let mut core = Core::new()?;
let client = ClientBuilder::new(CONNECTION)?
   .async_connect_secure(None)  
   .and_then(|(msg, _)| match msg {
       Some(OwnedMessage::Text(response_txt)) => Ok(response_txt),
       _ => Err(WebSocketError::ProtocolError(UNSUPPORTED_MSG_ERR)),
   });

let response_message = core.run(client)?;

有没有一种方法可以将https或socks代理与websocket一起使用?

设置env变量代理时会发生什么?哪一种?但是,是的,我设置了它们,因为我在代理后面使用了curl、wget、git、node、composer等。实际上,rust reqwest以某种方式使用了系统代理,我必须调用.no_proxy(),以防止在连接到本地资源时通过代理,但websocket不会。如果设置了系统代理而websocket未通过,则可能是您的代理未配置为允许websocket通过