async_graphql_axum

Struct GraphQLWebSocket

source
pub struct GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing> { /* private fields */ }
Expand description

A Websocket connection for GraphQL subscription.

Implementations§

source§

impl<S, E> GraphQLWebSocket<SplitSink<S, Message>, SplitStream<S>, E, DefaultOnConnInitType, DefaultOnPingType>
where S: Stream<Item = Result<Message, Error>> + Sink<Message>, E: Executor,

source

pub fn new(stream: S, executor: E, protocol: GraphQLProtocol) -> Self

Create a GraphQLWebSocket object.

source§

impl<Sink, Stream, E> GraphQLWebSocket<Sink, Stream, E, DefaultOnConnInitType, DefaultOnPingType>
where Sink: Sink<Message>, Stream: Stream<Item = Result<Message, Error>>, E: Executor,

source

pub fn new_with_pair( sink: Sink, stream: Stream, executor: E, protocol: GraphQLProtocol, ) -> Self

Create a GraphQLWebSocket object with sink and stream objects.

source§

impl<Sink, Stream, E, OnConnInit, OnConnInitFut, OnPing, OnPingFut> GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>
where Sink: Sink<Message>, Stream: Stream<Item = Result<Message, Error>>, E: Executor, OnConnInit: FnOnce(Value) -> OnConnInitFut + Send + 'static, OnConnInitFut: Future<Output = Result<Data>> + Send + 'static, OnPing: FnOnce(Option<&Data>, Option<Value>) -> OnPingFut + Clone + Send + 'static, OnPingFut: Future<Output = Result<Option<Value>>> + Send + 'static,

source

pub fn with_data(self, data: Data) -> Self

Specify the initial subscription context data, usually you can get something from the incoming request to create it.

source

pub fn on_connection_init<F, R>( self, callback: F, ) -> GraphQLWebSocket<Sink, Stream, E, F, OnPing>
where F: FnOnce(Value) -> R + Send + 'static, R: Future<Output = Result<Data>> + Send + 'static,

Specify a callback function to be called when the connection is initialized.

You can get something from the payload of GQL_CONNECTION_INIT message to create Data. The data returned by this callback function will be merged with the data specified by [with_data].

source

pub fn on_ping<F, R>( self, callback: F, ) -> GraphQLWebSocket<Sink, Stream, E, OnConnInit, F>
where F: FnOnce(Option<&Data>, Option<Value>) -> R + Clone + Send + 'static, R: Future<Output = Result<Option<Value>>> + Send + 'static,

Specify a ping callback function.

This function if present, will be called with the data sent by the client in the Ping message.

The function should return the data to be sent in the Pong message.

NOTE: Only used for the graphql-ws protocol.

source

pub fn keepalive_timeout(self, timeout: impl Into<Option<Duration>>) -> Self

Sets a timeout for receiving an acknowledgement of the keep-alive ping.

If the ping is not acknowledged within the timeout, the connection will be closed.

NOTE: Only used for the graphql-ws protocol.

source

pub async fn serve(self)

Processing subscription requests.

Auto Trait Implementations§

§

impl<Sink, Stream, E, OnConnInit, OnPing> Freeze for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>
where Sink: Freeze, Stream: Freeze, E: Freeze, OnConnInit: Freeze, OnPing: Freeze,

§

impl<Sink, Stream, E, OnConnInit, OnPing> !RefUnwindSafe for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>

§

impl<Sink, Stream, E, OnConnInit, OnPing> Send for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>
where Sink: Send, Stream: Send, E: Send, OnConnInit: Send, OnPing: Send,

§

impl<Sink, Stream, E, OnConnInit, OnPing> Sync for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>
where Sink: Sync, Stream: Sync, E: Sync, OnConnInit: Sync, OnPing: Sync,

§

impl<Sink, Stream, E, OnConnInit, OnPing> Unpin for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>
where Sink: Unpin, Stream: Unpin, E: Unpin, OnConnInit: Unpin, OnPing: Unpin,

§

impl<Sink, Stream, E, OnConnInit, OnPing> !UnwindSafe for GraphQLWebSocket<Sink, Stream, E, OnConnInit, OnPing>

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<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,