1 个不稳定版本

0.0.1 2021年1月15日
0.0.1-alpha.12021年7月14日

260WebSocket

MIT 协议

42KB
892

工作状态:infotainer

Test codecov

注意:目前,这个项目是为了我自己学习和实现感兴趣的东西而设计的。它对任何人都没有实际的实用价值。

Infotainer包含基于actix/-web、cbor和websockets的简单pubsub服务的构建块。

组件

WebSocket接口是一个actor,其处理程序主要围绕 ClientCommandServerResponse 类型构建。 ClientCommand 由包含从客户端发送到服务器的数据的结构体变体组成。这些通过 WebSocketSession actor转换为actix Message
ServerResponse 类型用于封装从服务器发送到客户端的数据,可以包含表示订阅日志索引的 HashSet<Uuid>,表示由某个客户端发布的数据的 Publication,或包含先前提交到数据日志的 PublicationDataLogEntry

pubsub服务actor处理 SubmitCommandManageSubscription 消息。当提交数据以供发布时,actor查找指定的 Subscription,生成一个 Publication,将其包装在一个 DataLogPut 消息中,发送到 DataLogger,并将其分发给已订阅 Subscription 的连接客户端。
ManageSubscription 有两种变体,分别是 AddRemove,客户端通过它们来取消/订阅到 Subscriptions

DatalogService 允许持久化服务器状态以及发布的数据。 DataLogPut 消息代表对 SubscriptionMeta、订阅者列表和 Publication 的写入请求。 DataLogFetch 消息用于检索持久化数据。此外,它还维护订阅及其发布物的日志。

功能

  • WebSocket接口/客户端消息类型
  • 订阅/订阅表
  • 广播类型订阅
  • 队列类型订阅
  • 发布
  • 发布消息
  • 会话管理
  • 数据日志服务
  • 持久化/检索发布数据
  • 持久化/检索订阅元数据
  • 从持久化数据中重建服务器状态

这有什么好处吗?

是的

依赖

~26–38MB
~684K SLoC