wtx-0.2.0 has been yanked.
WTX

Intended to group different web transport implementations.
WebSocket
fastwebsockets served as an initial inspiration for the skeleton of this implementation so thanks to the authors.
use wtx::{Stream, web_socket::{Frame, FrameBufferVec, OpCode, WebSocketClient}};
pub async fn handle_client_frames(ws: &mut WebSocketClient<impl Stream>) -> wtx::Result<()> {
let mut fb = FrameBufferVec::default();
loop {
let frame = match ws.read_msg(&mut fb).await {
Err(err) => {
println!("Error: {err}");
ws.write_frame(Frame::new_fin(fb, OpCode::Close, &[])?).await?;
break;
}
Ok(elem) => elem,
};
match (frame.op_code(), frame.text_payload()) {
(_, Some(elem)) => println!("{elem}"),
(OpCode::Close, _) => break,
_ => {}
}
}
Ok(())
}
See the examples directory for more suggestions.