Struct Hub

Source
pub struct Hub { /* private fields */ }
Expand description

Client-side hub

Hub can be called by the server. It currently supports only value-like arguments - ones that can be deserialized from a single message. There are also stream-like arguments - ones that server can stream to client asynchronously, but they are not supported yet.

use signalrs_client::SignalRClient;
use signalrs_client::hub::Hub;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let hub = Hub::default().method("Send", print);    

    let client = SignalRClient::builder("localhost")
        .use_port(8080)
        .use_hub("echo")
        .with_client_hub(hub)
        .build()
        .await?;
}

// Hub methods need to be async
async fn print(message: String) {
    println!("{message}");
}

Implementations§

Source§

impl Hub

Source

pub fn method<M, Args>(self, name: impl ToString, method: M) -> Self
where M: Handler<Args> + Send + Sync + Clone + 'static, Args: Send + Sync + 'static,

Embeds a new method in a hub under name.

Any server calls to a method of name will be routed to function pointed to by method. Only functions returning () and async are allowed. Up to 13 arguments are supported. They will be extracted from server call. In case extraction fails, error will be logged.

All primitive arguments should be usable out of the box. In case custom one needs to be used see HubArgument. Value-like hub arguments need to implement Deserialize as well.

§Example
use serde::Deserialize;
use signalrs_derive::HubArgument;

#[derive(Deserialize, HubArgument)]
struct Data {
    f1: i32,
    f2: String
}

Trait Implementations§

Source§

impl Default for Hub

Source§

fn default() -> Hub

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

Auto Trait Implementations§

§

impl Freeze for Hub

§

impl !RefUnwindSafe for Hub

§

impl Send for Hub

§

impl Sync for Hub

§

impl Unpin for Hub

§

impl !UnwindSafe for Hub

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> 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

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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> ErasedDestructor for T
where T: 'static,