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

Download history 134/week @ 2024-03-13 24/week @ 2024-03-20 26/week @ 2024-03-27 137/week @ 2024-04-03 31/week @ 2024-04-10 53/week @ 2024-04-17 261/week @ 2024-04-24 28/week @ 2024-05-01 13/week @ 2024-05-08 162/week @ 2024-05-15 32/week @ 2024-05-22 39/week @ 2024-05-29 43/week @ 2024-06-05 44/week @ 2024-06-12 56/week @ 2024-06-19 366/week @ 2024-06-26

515 每月下载量
3 个 Crates 中使用(通过 kaminari

MIT 许可证

150KB
3.5K SLoC

Lightws

Lightws Lightws Released API docs crates.io

轻量级的流传输 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