3个版本 (破坏性)
0.3.0 | 2024年4月29日 |
---|---|
0.2.0 | 2024年1月14日 |
0.1.0 | 2023年12月30日 |
#72 in WebSocket
每月148次下载
在gneiss-mqtt-aws中使用
1MB
17K SLoC
gneiss-mqtt
Rust MQTT5客户端实现。
此项目目前处于预开发预览阶段。您可以使用它,但存在很多摩擦和缺失的文档/示例。
欢迎反馈。感兴趣的贡献者也欢迎。
规范合规性说明
除了以下例外,gneiss-mqtt支持MQTT5规范的所有方面:
- 扩展Utf-8验证 - 除了Rust标准库为字符串所做的验证外,不执行客户端utf-8验证。MQTT5规范施加了Rust标准库不检查的额外约束。
- 身份验证 - 没有MQTT5身份验证交换的API。实现了身份验证包编码/解码/验证,但当前假设通过较低级别的或自定义协议细节(mTLS、WebSocket升级签名、用户名/密码方案等)完成身份验证。特定身份验证样式的Crates即将推出。身份验证交换是长期路线图项目。
- 客户端队列接收最大阻塞 - MQTT5规范要求当当前会话达到接收最大阈值时,客户端不得阻塞非发布包。作者认为这是一个不必要的限制,试图表达“不要延迟确认或ping以接收最大值”的意思,但使用了一些更粗糙/笨拙的方法,因为这种概念很难用正式规范语言表达。在gneiss-mqtt中,订阅和取消订阅也会被接收最大状态阻塞。欢迎对此提出相反意见。
- 经纪人宽恕 - 客户对经纪人行为验证并非100%严格。虽然许多协议违规会导致客户关闭连接,但并非所有都会。特别是,不会破坏关键不变性或实现配置的违规通常会被允许。例如,如果经纪人发送的包大小超过客户允许的大小,我们不会断开连接。另一方面,如果经纪人发送一个带有未知别名且没有主题的发布包,我们会断开连接,因为我们无法处理它。我们可能在将来重新审视这种宽恕,允许严格的合规模式,但作者的观点是,僵化/不妥协的合规验证会导致脆弱的应用程序。
路线图
请参阅 Gneiss MQTT 路线图
许可证
本库采用 Apache 2.0 许可证。
依赖关系
~2–14MB
~183K SLoC