Skip to main content

WebSocketFrame

Struct WebSocketFrame 

Source
pub struct WebSocketFrame {
    pub fin: bool,
    pub opcode: WebSocketOpcode,
    pub mask: bool,
    pub payload_data: Vec<u8>,
}
Expand description

Represents a decoded WebSocket frame.

Fields§

§fin: bool

FIN flag indicating if this is the final frame.

§opcode: WebSocketOpcode

Opcode indicating the frame type (text, binary, etc.).

§mask: bool

Mask flag indicating if the payload is masked.

§payload_data: Vec<u8>

The payload data of the frame.

Implementations§

Source§

impl WebSocketFrame

Source

pub fn decode_ws_frame<D>(data: D) -> Option<(WebSocketFrame, usize)>
where D: AsRef<[u8]>,

Decodes a WebSocket frame from the provided data slice.

This function parses the raw bytes from a WebSocket stream according to the WebSocket protocol specification to reconstruct a WebSocketFrame. It handles FIN bit, opcode, mask bit, payload length (including extended lengths), mask key, and the payload data itself.

§Arguments
  • AsRef<[u8]> - The raw data to decode into a WebSocket frame.
§Returns
  • Option<(WebSocketFrame, usize)>
    • Some((WebSocketFrame, usize)): If the frame is successfully decoded, returns the decoded frame and the number of bytes consumed from the input slice.
    • None: If the frame is incomplete or malformed.
Source

pub fn create_frame_list<D>(data: D) -> Vec<ResponseBody>
where D: AsRef<[u8]>,

Creates a list of response frames from the provided body.

This method segments the response body into WebSocket frames, respecting the maximum frame size and handling UTF-8 character boundaries for text frames. It determines the appropriate opcode (Text or Binary) based on the body’s content.

§Arguments
  • AsRef<[u8]> - A reference to a response body (payload) as a byte slice.
§Returns
  • Vec<ResponseBody> - A vector of ResponseBody (byte vectors), where each element represents a framed WebSocket message.
Source

pub fn sha1<D>(data: D) -> [u8; 20]
where D: AsRef<[u8]>,

Calculates the SHA-1 hash of the input data.

This function implements the SHA-1 cryptographic hash algorithm according to RFC 3174. It processes the input data in 512-bit (64-byte) blocks and produces a 160-bit (20-byte) hash.

§Arguments
  • AsRef<[u8]> - The input data to be hashed.
§Returns
  • [u8; 20] - A 20-byte array representing the SHA-1 hash of the input data.
Source

pub fn try_generate_accept_key<K>(key: K) -> Option<String>
where K: AsRef<str>,

Generates a WebSocket accept key from the client-provided key, returning an Option<String>.

§Arguments
  • AsRef<str> - The client-provided key (typically from the Sec-WebSocket-Key header).
§Returns
  • Option<String> - An optional string representing the generated WebSocket accept key (typically for the Sec-WebSocket-Accept header).
Source

pub fn generate_accept_key<K>(key: K) -> String
where K: AsRef<str>,

Generates a WebSocket accept key from the client-provided key.

This function is used during the WebSocket handshake to validate the client’s request. It concatenates the client’s key with a specific GUID, calculates the SHA-1 hash of the result, and then encodes the hash in base64.

§Arguments
  • AsRef<str> - The client-provided key (typically from the Sec-WebSocket-Key header).
§Returns
  • Option<String> - An optional string representing the generated WebSocket accept key (typically for the Sec-WebSocket-Accept header).
§Panics

This function will panic if the input key cannot be converted to a UTF-8 string.

Source

pub fn try_base64_encode<D>(data: D) -> Option<String>
where D: AsRef<[u8]>,

Encodes the input data as a base64 string, returning an Option<String>.

§Arguments
  • AsRef<[u8]> - The data to encode in base64.
§Returns
  • Option<String> - An optional string with the base64 encoded representation of the input data.
Source

pub fn base64_encode<D>(data: D) -> String
where D: AsRef<[u8]>,

Encodes the input data as a base64 string.

§Arguments
  • AsRef<[u8]> - The data to encode in base64.
§Returns
  • String - A string with the base64 encoded representation of the input data.
§Panics

This function will panic if the input data cannot be converted to a UTF-8 string.

Source

pub fn is_continuation_opcode(&self) -> bool

Checks if the opcode is a continuation frame.

§Returns
  • bool - true if the opcode is Continuation, otherwise false.
Source

pub fn is_text_opcode(&self) -> bool

Checks if the opcode is a text frame.

§Returns
  • bool - true if the opcode is Text, otherwise false.
Source

pub fn is_binary_opcode(&self) -> bool

Checks if the opcode is a binary frame.

§Returns
  • bool - true if the opcode is Binary, otherwise false.
Source

pub fn is_close_opcode(&self) -> bool

Checks if the opcode is a close frame.

§Returns
  • bool - true if the opcode is Close, otherwise false.
Source

pub fn is_ping_opcode(&self) -> bool

Checks if the opcode is a ping frame.

§Returns
  • bool - true if the opcode is Ping, otherwise false.
Source

pub fn is_pong_opcode(&self) -> bool

Checks if the opcode is a pong frame.

§Returns
  • bool - true if the opcode is Pong, otherwise false.
Source

pub fn is_reserved_opcode(&self) -> bool

Checks if the opcode is a reserved frame.

§Returns
  • bool - true if the opcode is Reserved(_), otherwise false.
Source§

impl WebSocketFrame

Source

pub fn get_fin(&self) -> &bool

Source

pub fn get_opcode(&self) -> &WebSocketOpcode

Source

pub fn get_mask(&self) -> &bool

Source

pub fn get_payload_data(&self) -> &Vec<u8>

Trait Implementations§

Source§

impl Clone for WebSocketFrame

Source§

fn clone(&self) -> WebSocketFrame

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for WebSocketFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for WebSocketFrame

Implements the Default trait for WebSocketFrame.

Provides a default WebSocketFrame with fin: false, opcode: WebSocketOpcode::Text, mask: false, and an empty payload_data.

Source§

fn default() -> Self

Returns the default WebSocketFrame.

§Returns
  • Self - A default WebSocketFrame instance.
Source§

impl Display for WebSocketFrame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for WebSocketFrame

Source§

impl PartialEq for WebSocketFrame

Source§

fn eq(&self, other: &WebSocketFrame) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for WebSocketFrame

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> AnySend for T
where T: Any + Send,

Source§

impl<T> AnySendClone for T
where T: Any + Send + Clone,

Source§

impl<T> AnySendSync for T
where T: Any + Send + Sync,

Source§

impl<T> AnySendSyncClone for T
where T: Any + Send + Sync + Clone,

Source§

impl<T> AnySync for T
where T: Any + Sync,

Source§

impl<T> AnySyncClone for T
where T: Any + Sync + Clone,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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, 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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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