1 个不稳定版本
0.0.1 |
|
---|---|
0.0.1-alpha.1 | 2021年7月14日 |
260 在 WebSocket
42KB
892 行
工作状态:infotainer
注意:目前,这个项目是为了我自己学习和实现感兴趣的东西而设计的。它对任何人都没有实际的实用价值。
Infotainer包含基于actix/-web、cbor和websockets的简单pubsub服务的构建块。
组件
- WebSocket接口:处理客户端-服务器交互
- pubsub服务:管理订阅并处理客户端提交的发布
- datalog服务:维护日志索引并处理文件系统交互
WebSocket接口是一个actor,其处理程序主要围绕 ClientCommand
和 ServerResponse
类型构建。 ClientCommand
由包含从客户端发送到服务器的数据的结构体变体组成。这些通过 WebSocketSession
actor转换为actix Message
。ServerResponse
类型用于封装从服务器发送到客户端的数据,可以包含表示订阅日志索引的 HashSet<Uuid>
,表示由某个客户端发布的数据的 Publication
,或包含先前提交到数据日志的 Publication
的 DataLogEntry
。
pubsub服务actor处理 SubmitCommand
和 ManageSubscription
消息。当提交数据以供发布时,actor查找指定的 Subscription
,生成一个 Publication
,将其包装在一个 DataLogPut
消息中,发送到 DataLogger
,并将其分发给已订阅 Subscription
的连接客户端。
ManageSubscription
有两种变体,分别是 Add
和 Remove
,客户端通过它们来取消/订阅到 Subscriptions
。
DatalogService
允许持久化服务器状态以及发布的数据。 DataLogPut
消息代表对 SubscriptionMeta
、订阅者列表和 Publication
的写入请求。 DataLogFetch
消息用于检索持久化数据。此外,它还维护订阅及其发布物的日志。
功能
- WebSocket接口/客户端消息类型
- 订阅/订阅表
- 广播类型订阅
- 队列类型订阅
- 发布
- 发布消息
- 会话管理
- 数据日志服务
- 持久化/检索发布数据
- 持久化/检索订阅元数据
- 从持久化数据中重建服务器状态
这有什么好处吗?
依赖
~26–38MB
~684K SLoC