Struct jsonrpsee_ws_client::WsClientBuilder

source ·
pub struct WsClientBuilder { /* private fields */ }
Expand description

Builder for WsClient.

§Examples


use jsonrpsee_ws_client::{WsClientBuilder, HeaderMap, HeaderValue};

#[tokio::main]
async fn main() {
    // Build custom headers used during the handshake process.
    let mut headers = HeaderMap::new();
    headers.insert("Any-Header-You-Like", HeaderValue::from_static("42"));

    // Build client
    let client = WsClientBuilder::default()
         .set_headers(headers)
         .build("wss://localhost:443")
         .await
         .unwrap();

    // use client....
}

Implementations§

source§

impl WsClientBuilder

source

pub fn new() -> WsClientBuilder

Create a new WebSocket client builder.

source

pub fn with_custom_cert_store(self, cfg: CustomCertStore) -> Self

Force to use a custom certificate store.

§Optional

This requires the optional tls feature.

§Example
use jsonrpsee_ws_client::{WsClientBuilder, CustomCertStore};
use rustls::{
    client::danger::{self, HandshakeSignatureValid, ServerCertVerified},
    pki_types::{CertificateDer, ServerName, UnixTime},
    Error,
};

#[derive(Debug)]
struct NoCertificateVerification;

impl rustls::client::danger::ServerCertVerifier for NoCertificateVerification {
    fn verify_server_cert(
        &self,
        _: &CertificateDer<'_>,
        _: &[CertificateDer<'_>],
        _: &ServerName<'_>,
        _: &[u8],
        _: UnixTime,
    ) -> Result<ServerCertVerified, Error> {
        Ok(ServerCertVerified::assertion())
    }

    fn supported_verify_schemes(&self) -> Vec<rustls::SignatureScheme> {
        vec![rustls::SignatureScheme::ECDSA_NISTP256_SHA256]
    }

    fn verify_tls12_signature(
        &self,
        _: &[u8],
        _: &CertificateDer<'_>,
        _: &rustls::DigitallySignedStruct,
    ) -> Result<rustls::client::danger::HandshakeSignatureValid, Error> {
        Ok(HandshakeSignatureValid::assertion())
    }

    fn verify_tls13_signature(
        &self,
        _: &[u8],
        _: &CertificateDer<'_>,
        _: &rustls::DigitallySignedStruct,
    ) -> Result<HandshakeSignatureValid, Error> {
        Ok(HandshakeSignatureValid::assertion())
    }
}

let tls_cfg = CustomCertStore::builder()
   .dangerous()
   .with_custom_certificate_verifier(std::sync::Arc::new(NoCertificateVerification))
   .with_no_client_auth();

// client builder with disabled certificate verification.
let client_builder = WsClientBuilder::new().with_custom_cert_store(tls_cfg);
source

pub fn max_request_size(self, size: u32) -> Self

See documentation WsTransportClientBuilder::max_request_size (default is 10 MB).

source

pub fn max_response_size(self, size: u32) -> Self

See documentation WsTransportClientBuilder::max_response_size (default is 10 MB).

source

pub fn request_timeout(self, timeout: Duration) -> Self

See documentation ClientBuilder::request_timeout (default is 60 seconds).

source

pub fn connection_timeout(self, timeout: Duration) -> Self

See documentation WsTransportClientBuilder::connection_timeout (default is 10 seconds).

source

pub fn enable_ws_ping(self, cfg: PingConfig) -> Self

See documentation ClientBuilder::enable_ws_ping (disabled by default).

source

pub fn disable_ws_ping(self) -> Self

source

pub fn set_headers(self, headers: HeaderMap) -> Self

See documentation WsTransportClientBuilder::set_headers (default is none).

source

pub fn max_concurrent_requests(self, max: usize) -> Self

See documentation ClientBuilder::max_concurrent_requests (default is 256).

source

pub fn max_buffer_capacity_per_subscription(self, max: usize) -> Self

See documentation ClientBuilder::max_buffer_capacity_per_subscription (default is 1024).

source

pub fn max_redirections(self, redirect: usize) -> Self

See documentation WsTransportClientBuilder::max_redirections (default is 5).

source

pub fn id_format(self, kind: IdKind) -> Self

See documentation for ClientBuilder::id_format (default is Number).

source

pub fn set_max_logging_length(self, max: u32) -> Self

Set maximum length for logging calls and responses.

Logs bigger than this limit will be truncated.

source

pub fn set_tcp_no_delay(self, no_delay: bool) -> Self

See documentation ClientBuilder::set_tcp_no_delay (default is true).

source

pub fn build_with_transport<S, R>(self, sender: S, receiver: R) -> WsClient

Build the WsClient with specified TransportSenderT TransportReceiverT parameters

§Panics

Panics if being called outside of tokio runtime context.

source

pub async fn build_with_stream<T>( self, url: impl AsRef<str>, data_stream: T, ) -> Result<WsClient, Error>
where T: AsyncRead + AsyncWrite + Unpin + MaybeSend + 'static,

Build the WsClient with specified data stream, using WsTransportClientBuilder::build_with_stream.

§Panics

Panics if being called outside of tokio runtime context.

source

pub async fn build(self, url: impl AsRef<str>) -> Result<WsClient, Error>

Build the WsClient with specified URL to connect to, using the default WsTransportClientBuilder::build_with_stream, therefore with the default TCP as transport layer.

§Panics

Panics if being called outside of tokio runtime context.

Trait Implementations§

source§

impl Clone for WsClientBuilder

source§

fn clone(&self) -> WsClientBuilder

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for WsClientBuilder

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for WsClientBuilder

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> MaybeSend for T
where T: Send,