#websocket #async #pipebuf

pipebuf_websocket

PipeBuf 对 websockets 的支持

3 个不稳定版本

0.2.0 2024 年 4 月 15 日
0.1.1 2023 年 7 月 17 日
0.1.0 2023 年 6 月 7 日

#530异步

Download history 136/week @ 2024-04-15 5/week @ 2024-05-20

每月 154 次下载

MIT/Apache

17KB
160

PipeBuf 对 websockets 的支持

这仅处理 websocket 协议,与传输或任何其他协议层(如 TLS)无关。因此,它可以与其他 crate(如 pipebuf_miopipebuf_rustls)结合使用以满足不同需求。它还支持协议检测,因此如果数据看起来不是一个有效的 websocket 连接,则可以将其传递给另一个协议处理程序,如 HTTP。

文档

请参阅 crate 文档

许可

本项目根据 Apache License 版本 2 或 MIT 许可证授权,由您选择。(见 LICENSE-APACHELICENSE-MIT)。

贡献

除非您明确声明,否则您提交给本项目包含在 crate 中的任何贡献,根据 Apache-2.0 许可证定义,均应双许可,没有额外的条款或条件。


lib.rs:

PipeBufembedded-websocket 的包装

这仅处理 websocket 协议,独立于传输。因此,它可以与 pipebuf_miopipebuf_rustls 或其他 crate 结合使用以满足不同需求。

这是高效的,因为 embedded-websocket 提供了一个基于切片的接口,并在调用者提供的缓冲区之间工作。因此,它非常适合被 PipeBuf 包装。由于 websocket 允许通过片段流式传输消息数据,因此在这里将消息处理为一个管道缓冲区,允许调用者如果需要的话也流式传输数据。

在发送端,每次发送消息后都指示“推送”。

待办:支持使用 WebsocketClient 包装器进行客户端支持。(与现有代码类似,但需要进行测试。)

待办:将其重写为基于原生PipeBuf的websocket实现,该实现对于Ping/Pong/Close操作仅消耗完整帧(有上限),以简化问题。消息内容仍然可以流式传输。另请参阅 Autobahn测试套件

依赖项

~1MB
~23K SLoC