Struct substrate_rpc_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
impl WsClientBuilder
sourcepub fn new() -> WsClientBuilder
pub fn new() -> WsClientBuilder
Create a new WebSocket client builder.
sourcepub fn with_custom_cert_store(self, cfg: ClientConfig) -> WsClientBuilder
pub fn with_custom_cert_store(self, cfg: ClientConfig) -> WsClientBuilder
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);
sourcepub fn max_request_size(self, size: u32) -> WsClientBuilder
pub fn max_request_size(self, size: u32) -> WsClientBuilder
See documentation WsTransportClientBuilder::max_request_size
(default is 10 MB).
sourcepub fn max_response_size(self, size: u32) -> WsClientBuilder
pub fn max_response_size(self, size: u32) -> WsClientBuilder
See documentation WsTransportClientBuilder::max_response_size
(default is 10 MB).
sourcepub fn request_timeout(self, timeout: Duration) -> WsClientBuilder
pub fn request_timeout(self, timeout: Duration) -> WsClientBuilder
See documentation ClientBuilder::request_timeout
(default is 60 seconds).
sourcepub fn connection_timeout(self, timeout: Duration) -> WsClientBuilder
pub fn connection_timeout(self, timeout: Duration) -> WsClientBuilder
See documentation WsTransportClientBuilder::connection_timeout
(default is 10 seconds).
sourcepub fn enable_ws_ping(self, cfg: PingConfig) -> WsClientBuilder
pub fn enable_ws_ping(self, cfg: PingConfig) -> WsClientBuilder
See documentation ClientBuilder::enable_ws_ping
(disabled by default).
sourcepub fn disable_ws_ping(self) -> WsClientBuilder
pub fn disable_ws_ping(self) -> WsClientBuilder
See documentation ClientBuilder::disable_ws_ping
sourcepub fn set_headers(self, headers: HeaderMap) -> WsClientBuilder
pub fn set_headers(self, headers: HeaderMap) -> WsClientBuilder
See documentation WsTransportClientBuilder::set_headers
(default is none).
sourcepub fn max_concurrent_requests(self, max: usize) -> WsClientBuilder
pub fn max_concurrent_requests(self, max: usize) -> WsClientBuilder
See documentation ClientBuilder::max_concurrent_requests
(default is 256).
sourcepub fn max_buffer_capacity_per_subscription(self, max: usize) -> WsClientBuilder
pub fn max_buffer_capacity_per_subscription(self, max: usize) -> WsClientBuilder
See documentation ClientBuilder::max_buffer_capacity_per_subscription
(default is 1024).
sourcepub fn max_redirections(self, redirect: usize) -> WsClientBuilder
pub fn max_redirections(self, redirect: usize) -> WsClientBuilder
See documentation WsTransportClientBuilder::max_redirections
(default is 5).
sourcepub fn id_format(self, kind: IdKind) -> WsClientBuilder
pub fn id_format(self, kind: IdKind) -> WsClientBuilder
See documentation for ClientBuilder::id_format
(default is Number).
sourcepub fn set_max_logging_length(self, max: u32) -> WsClientBuilder
pub fn set_max_logging_length(self, max: u32) -> WsClientBuilder
Set maximum length for logging calls and responses.
Logs bigger than this limit will be truncated.
sourcepub fn set_tcp_no_delay(self, no_delay: bool) -> WsClientBuilder
pub fn set_tcp_no_delay(self, no_delay: bool) -> WsClientBuilder
See documentation ClientBuilder::set_tcp_no_delay
(default is true).
sourcepub fn build_with_transport<S, R>(self, sender: S, receiver: R) -> Client
pub fn build_with_transport<S, R>(self, sender: S, receiver: R) -> Client
Build the WsClient
with specified TransportSenderT
TransportReceiverT
parameters
§Panics
Panics if being called outside of tokio
runtime context.
sourcepub async fn build_with_stream<T>(
self,
url: impl AsRef<str>,
data_stream: T,
) -> Result<Client, Error>
pub async fn build_with_stream<T>( self, url: impl AsRef<str>, data_stream: T, ) -> Result<Client, Error>
Build the WsClient
with specified data stream, using WsTransportClientBuilder::build_with_stream
.
§Panics
Panics if being called outside of tokio
runtime context.
sourcepub async fn build(self, url: impl AsRef<str>) -> Result<Client, Error>
pub async fn build(self, url: impl AsRef<str>) -> Result<Client, 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
impl Clone for WsClientBuilder
source§fn clone(&self) -> WsClientBuilder
fn clone(&self) -> WsClientBuilder
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for WsClientBuilder
impl Debug for WsClientBuilder
source§impl Default for WsClientBuilder
impl Default for WsClientBuilder
source§fn default() -> WsClientBuilder
fn default() -> WsClientBuilder
Auto Trait Implementations§
impl Freeze for WsClientBuilder
impl !RefUnwindSafe for WsClientBuilder
impl Send for WsClientBuilder
impl Sync for WsClientBuilder
impl Unpin for WsClientBuilder
impl !UnwindSafe for WsClientBuilder
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)source§impl<T> FmtForward for T
impl<T> FmtForward for T
source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
source§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read moresource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
T
. Read moresource§impl<T> Tap for T
impl<T> Tap for T
source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read moresource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read moresource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read moresource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read moresource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read moresource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.source§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
unchecked_from
.source§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
source§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
T
.