1 个不稳定版本
0.1.0 | 2023 年 11 月 15 日 |
---|
#307 in WebSocket
61KB
1K SLoC
底层 WebSocket (RFC 6455) 库,实现 WebSocket 数据帧的编码和解码。
- 无内存分配。仅保留最小状态在内存中,所有有效负载内容保留在用户提供的缓冲区中。此包是 no_std 兼容的。
- 无输入或输出。它只帮助您将原始字节转换为有意义的结构,反之亦然。
- 帧有效负载可以分成任意块。
- 无验证 - 如果需要,您可以设置或访问保留位或操作码。
- 编码器和解码器状态相对较小。您可以通过禁用
large_frames
包特性来进一步缩小解码器的尺寸。 - 掩码应该足够快并且对 SIMD 友好。您可以通过调整包特性来禁用优化(以减小代码大小)或调整 SIMD 切片大小。
- 编码器和解码器实例可以进行常量初始化。
处理 ping、HTTP 升级、掩码和关闭帧是用户的职责。没有自动将消息组装成帧或将消息拆分成帧的功能。WebSocket 文本帧的处理方式与二进制帧相同 - 您需要自己将其转换为字符串。
示例
- encode_frame - 编码一个简单的文本 WebSocket 消息并用 Tungstenite 解码。
- decode_frame - 使用 Tungstenite 编码一个简单的文本消息,并用此库解码。虽然在这种情况下没有实际出现控制或分段消息,但它尝试正确处理它们,以作为其他代码的模板。
- mirror_client - 连接到监听在
127.0.0.1:1234
的 WebSocket 服务器,并将从它接收的所有帧发送回去,并在控制台上宣布每个帧。使用 Tokio 和 hyper v1。演示了如何验证传入的帧。
依赖关系
~275KB
~10K SLoC