"Ресурс временно недоступен" при попытке подключения к веб-сокету https с помощью ws-rs (mio)
Я пытаюсь установить безопасное соединение с помощью Rust ws-rs
(по материалам Mio).
Часть кода, которую я считаю актуальной:
impl ws::Handler for Client {
fn on_message(&mut self, msg: ws::Message) -> ws::Result<()> {
println!("msg = {}", msg);
self.out.close(ws::CloseCode::Normal)
}
fn upgrade_ssl_client(
&mut self,
sock: TcpStream,
_: &url::Url,
) -> ws::Result<SslStream<TcpStream>> {
let mut builder = SslConnector::builder(SslMethod::tls()).map_err(|e| {
ws::Error::new(
ws::ErrorKind::Internal,
format!("Failed to upgrade client to SSL: {}", e),
)
})?;
builder.set_verify(SslVerifyMode::empty());
let connector = builder.build()
.configure()
.unwrap()
.use_server_name_indication(false)
.verify_hostname(false)
.connect("localhost:12321", sock)
.unwrap();
Ok(connector)
}
}
Полный пример на Github, это ~150 строк, что так мало, как я мог бы это получить.
Я получаю эту ошибку:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value:
WouldBlock(MidHandshakeSslStream {
stream: SslStream {
stream: TcpStream { addr: V4(127.0.0.1:52164), peer: V4(127.0.0.1:12321), fd: 12 },
ssl: Ssl { state: "SSLv2/v3 read server hello A", verify_result: X509VerifyResult { code: 0, error: "ok" } }
}, error: Error {
code: ErrorCode(2),
cause: Some(Io(Os {
code: 11,
kind: WouldBlock,
message: "Resource temporarily unavailable"
}))
}
})
Я действительно не знаю, что это значит...
(В прошлом месяце я также создал проблему ws-rs Github, так как думал, что это может быть проблема с lib или примером)