You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
836 B
26 lines
836 B
//! WebSocket extensions
|
|
|
|
pub mod compression;
|
|
|
|
use crate::protocol::frame::coding::Data;
|
|
use crate::protocol::frame::{ExtensionHeaders, Frame};
|
|
use crate::Message;
|
|
|
|
/// A trait for defining WebSocket extensions for both WebSocket clients and servers. Extensions
|
|
/// may be stacked by nesting them inside one another.
|
|
pub trait WebSocketExtension {
|
|
/// Called when a frame is about to be sent.
|
|
fn on_send_frame(&mut self, frame: Frame) -> Result<Frame, crate::Error> {
|
|
Ok(frame)
|
|
}
|
|
|
|
/// Called when a frame has been received and unmasked. The frame provided frame will be of the
|
|
/// type `OpCode::Data`.
|
|
fn on_receive_frame(
|
|
&mut self,
|
|
data_opcode: Data,
|
|
is_final: bool,
|
|
header: ExtensionHeaders,
|
|
payload: Vec<u8>,
|
|
) -> Result<Option<Message>, crate::Error>;
|
|
}
|
|
|