23 个版本
0.6.10 | 2023 年 12 月 9 日 |
---|---|
0.6.8 | 2023 年 4 月 27 日 |
0.6.7 | 2022 年 8 月 30 日 |
0.6.6 | 2022 年 7 月 25 日 |
0.2.0 | 2022 年 3 月 27 日 |
#165 in WebSocket
515 每月下载量
在 3 个 Crates 中使用(通过 kaminari)
150KB
3.5K SLoC
Lightws
轻量级的流传输 WebSocket 实现。
特性
- 避免堆分配。
- 避免缓冲帧有效负载。
- 如果可用,则使用向量 IO。
- 透明地读取/写入底层 IO 源。
高级 API
[角色,端点,流]
Std
{
// handshake
let stream = Endpoint<TcpStream, Client>::connect(tcp, buf, host, path)?;
// read some data
stream.read(&mut buf)?;
// write some data
stream.write(&buf)?;
}
Async
{
// handshake
let stream = Endpoint<TcpStream, Client>::connect_async(tcp, buf, host, path).await?;
// read some data
stream.read(&mut buf).await?;
// write some data
stream.write(&buf).await?;
}
低级 API
[帧,握手]
帧
{
// encode a frame head
let head = FrameHead::new(...);
let offset = unsafe {
head.encode_unchecked(&mut buf);
};
// decode a frame head
let (head, offset) = FrameHead::decode(&buf).unwrap();
}
握手
{
// make a client handshake request
let request = Request::new(b"/ws", b"example.com", "sec-key..");
let offset = request.encode(&mut buf).unwrap();
// parse a server handshake response
let mut custom_headers = HttpHeader::new_storage();
let mut response = Response::new_storage(&mut custom_headers);
let offset = response.decode(&buf).unwrap();
}
依赖项
~0.9–2.2MB
~40K SLoC