hysteria2 0.1.2

A feature-rich, asynchronous Rust client library for the Hysteria 2 proxy protocol. / 功能丰富、异步的 Hysteria 2 代理协议 Rust 客户端库。
Documentation
use super::{
  authenticate_connection::authenticate_connection, create_quic_endpoint::create_quic_endpoint,
  create_tls_config::create_tls_config, hysteria_client::HysteriaClient,
  resolve_server_address::resolve_server_address,
};
use crate::{HysteriaError, config::Config};

/// Connect to the Hysteria server and perform the authentication handshake.
/// 连接到 Hysteria 服务器并执行认证握手。
pub async fn connect(config: &Config) -> Result<HysteriaClient, HysteriaError> {
  let remote = resolve_server_address(&config.server_addr).await?;
  let client_crypto = create_tls_config(config.insecure)?;
  let endpoint = create_quic_endpoint(client_crypto)?;
  let conn = endpoint.connect(remote, &config.server_name)?.await?;

  authenticate_connection(&conn, config).await?;

  Ok(HysteriaClient {
    quic_connection: conn,
  })
}