Struct rust_socketio::ClientBuilder
source · [−]pub struct ClientBuilder { /* private fields */ }Expand description
A builder class for a socket.io socket. This handles setting up the client and
configuring the callback, the namespace and metadata of the socket. If no
namespace is specified, the default namespace / is taken. The connect method
acts the build method and returns a connected Client.
Implementations
sourceimpl ClientBuilder
impl ClientBuilder
sourcepub fn new<T: Into<String>>(address: T) -> Self
pub fn new<T: Into<String>>(address: T) -> Self
Create as client builder from a URL. URLs must be in the form
[ws or wss or http or https]://[domain]:[port]/[path]. The
path of the URL is optional and if no port is given, port 80
will be used.
Example
use rust_socketio::{ClientBuilder, Payload, Client};
use serde_json::json;
let callback = |payload: Payload, socket: Client| {
match payload {
Payload::String(str) => println!("Received: {}", str),
Payload::Binary(bin_data) => println!("Received bytes: {:#?}", bin_data),
}
};
let mut socket = ClientBuilder::new("http://localhost:4200")
.namespace("/admin")
.on("test", callback)
.connect()
.expect("error while connecting");
// use the socket
let json_payload = json!({"token": 123});
let result = socket.emit("foo", json_payload);
assert!(result.is_ok());sourcepub fn namespace<T: Into<String>>(self, namespace: T) -> Self
pub fn namespace<T: Into<String>>(self, namespace: T) -> Self
Sets the target namespace of the client. The namespace should start
with a leading /. Valid examples are e.g. /admin, /foo.
sourcepub fn on<T: Into<Event>, F>(self, event: T, callback: F) -> Self where
F: for<'a> FnMut(Payload, Client) + 'static + Sync + Send,
pub fn on<T: Into<Event>, F>(self, event: T, callback: F) -> Self where
F: for<'a> FnMut(Payload, Client) + 'static + Sync + Send,
Registers a new callback for a certain [socketio::event::Event]. The event could either be
one of the common events like message, error, connect, close or a custom
event defined by a string, e.g. onPayment or foo.
Example
use rust_socketio::{ClientBuilder, Payload};
let socket = ClientBuilder::new("http://localhost:4200/")
.namespace("/admin")
.on("test", |payload: Payload, _| {
match payload {
Payload::String(str) => println!("Received: {}", str),
Payload::Binary(bin_data) => println!("Received bytes: {:#?}", bin_data),
}
})
.on("error", |err, _| eprintln!("Error: {:#?}", err))
.connect();
sourcepub fn tls_config(self, tls_config: TlsConnector) -> Self
pub fn tls_config(self, tls_config: TlsConnector) -> Self
Uses a preconfigured TLS connector for secure communication. This configures
both the polling as well as the websocket transport type.
Example
use rust_socketio::{ClientBuilder, Payload};
use native_tls::TlsConnector;
let tls_connector = TlsConnector::builder()
.use_sni(true)
.build()
.expect("Found illegal configuration");
let socket = ClientBuilder::new("http://localhost:4200/")
.namespace("/admin")
.on("error", |err, _| eprintln!("Error: {:#?}", err))
.tls_config(tls_connector)
.connect();
sourcepub fn opening_header<T: Into<HeaderValue>, K: Into<String>>(
self,
key: K,
val: T
) -> Self
pub fn opening_header<T: Into<HeaderValue>, K: Into<String>>(
self,
key: K,
val: T
) -> Self
Sets custom http headers for the opening request. The headers will be passed to the underlying transport type (either websockets or polling) and then get passed with every request thats made. via the transport layer.
Example
use rust_socketio::{ClientBuilder, Payload};
let socket = ClientBuilder::new("http://localhost:4200/")
.namespace("/admin")
.on("error", |err, _| eprintln!("Error: {:#?}", err))
.opening_header("accept-encoding", "application/json")
.connect();
sourcepub fn transport_type(self, transport_type: TransportType) -> Self
pub fn transport_type(self, transport_type: TransportType) -> Self
Specifies which EngineIO TransportType to use.
Example
use rust_socketio::{ClientBuilder, TransportType};
let socket = ClientBuilder::new("http://localhost:4200/")
// Use websockets to handshake and connect.
.transport_type(TransportType::Websocket)
.connect()
.expect("connection failed");
// use the socketsourcepub fn connect(self) -> Result<Client, Error>
pub fn connect(self) -> Result<Client, Error>
Connects the socket to a certain endpoint. This returns a connected
Client instance. This method returns an std::result::Result::Err
value if something goes wrong during connection. Also starts a separate
thread to start polling for packets. Used with callbacks.
Example
use rust_socketio::{ClientBuilder, Payload};
use serde_json::json;
let mut socket = ClientBuilder::new("http://localhost:4200/")
.namespace("/admin")
.on("error", |err, _| eprintln!("Client error!: {:#?}", err))
.connect()
.expect("connection failed");
// use the socket
let json_payload = json!({"token": 123});
let result = socket.emit("foo", json_payload);
assert!(result.is_ok());Auto Trait Implementations
impl !RefUnwindSafe for ClientBuilder
impl Send for ClientBuilder
impl Sync for ClientBuilder
impl Unpin for ClientBuilder
impl !UnwindSafe for ClientBuilder
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more