Lightws

Lightweight websocket implement for stream transmission.
Features
- Avoid heap allocation.
- Avoid buffering frame payload.
- Use vectored-io if available.
- Transparent Read/Write over the underlying IO source.
High-level API
[role, endpoint, stream]
{
let stream = Endpoint<TcpStream, Client>::connect(tcp, buf, host, path)?;
stream.read(&mut buf);
stream.write(&buf);
}
Low-level API
[frame, handshake]
Frame:
{
let head = FrameHead::new(...);
let offset = unsafe {
head.encode_unchecked(&mut buf);
}
let (head, offset) = FrameHead::decode(&buf).unwrap();
}
Handshake:
{
let mut custom_headers = HttpHeader::new_storage();
let request = Request::new(&mut custom_headers);
let offset = request.encode(&mut buf).unwrap();
let mut custom_headers = HttpHeader::new_storage();
let mut response = Response::new(&mut custom_headers);
let offset = response.decode(&buf).unwrap();
}