Skip to main content

Session

Struct Session 

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

A handle into the websocket session.

This type can be used to send messages into the WebSocket. It also implements Sink<Message> for integration with sink-based APIs.

Implementations§

Source§

impl Session

Source

pub fn with_codec<T, C>(self, codec: C) -> CodecSession<T, C>
where C: MessageCodec<T>,

Wraps this session with codec so it can send typed messages.

Source§

impl Session

Source

pub async fn text(&mut self, msg: impl Into<ByteString>) -> Result<(), Closed>

Sends text into the WebSocket.

if session.text("Some text").await.is_err() {
    // session closed
}
Source

pub async fn binary(&mut self, msg: impl Into<Bytes>) -> Result<(), Closed>

Sends raw bytes into the WebSocket.

if session.binary(&b"some bytes"[..]).await.is_err() {
    // session closed
}
Source

pub async fn ping(&mut self, msg: &[u8]) -> Result<(), Closed>

Pings the client.

For many applications, it will be important to send regular pings to keep track of if the client has disconnected

Ping payloads longer than 125 bytes are truncated to comply with RFC 6455 control frame size limits.

if session.ping(b"").await.is_err() {
    // session is closed
}
Source

pub async fn pong(&mut self, msg: &[u8]) -> Result<(), Closed>

Pongs the client.

Pong payloads longer than 125 bytes are truncated to comply with RFC 6455 control frame size limits.

match msg {
    Message::Ping(bytes) => {
        let _ = session.pong(&bytes).await;
    }
    _ => (),
}
Source

pub async fn continuation(&mut self, msg: Item) -> Result<(), Closed>

Manually controls sending continuations.

Be wary of this method. Continuations represent multiple frames that, when combined, are presented as a single message. They are useful when the entire contents of a message are not available all at once. However, continuations MUST NOT be interrupted by other Text or Binary messages. Control messages such as Ping, Pong, or Close are allowed to interrupt a continuation.

Continuations must be initialized with a First variant, and must be terminated by a Last variant, with only Continue variants sent in between.

session.continuation(Item::FirstText("Hello".into())).await?;
session.continuation(Item::Continue(b", World"[..].into())).await?;
session.continuation(Item::Last(b"!"[..].into())).await?;
Source

pub async fn close(self, reason: Option<CloseReason>) -> Result<(), Closed>

Sends a close message, and consumes the session.

All clones will return Err(Closed) if used after this call.

Close reason descriptions longer than 123 bytes are truncated to comply with RFC 6455 control frame size limits.

session.close(None).await

Trait Implementations§

Source§

impl Clone for Session

Source§

fn clone(&self) -> Session

Returns a duplicate 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 Sink<Message> for Session

Source§

type Error = Closed

The type of value produced by the sink when an error occurs.
Source§

fn poll_ready( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Attempts to prepare the Sink to receive a value. Read more
Source§

fn start_send(self: Pin<&mut Self>, item: Message) -> Result<(), Self::Error>

Begin the process of sending a value to the sink. Each call to this function must be preceded by a successful call to poll_ready which returned Poll::Ready(Ok(())). Read more
Source§

fn poll_flush( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Flush any remaining output from this sink. Read more
Source§

fn poll_close( self: Pin<&mut Self>, cx: &mut Context<'_>, ) -> Poll<Result<(), Self::Error>>

Flush any remaining output and close this sink, if necessary. 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§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

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

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