Skip to main content

Module hub

Module hub 

Source
Expand description

在线翻译协作 Hub 核心逻辑

移植自 Poprako 的“页面级独占编辑 + 整页快照广播”协作模型:

  • 在线状态:项目(话数)内每个连接一条在线记录,存 Redis 哈希 hub:{project}:presence
  • 页面锁:每页一把独占锁,Redis 字符串 hub:{project}:lock:{page}SET NX EX 抢占 + 续约)
  • 页面快照:整页翻校单元快照,Redis 字符串 hub:{project}:snapshot:{page},供重连/跨实例恢复
  • 跨实例广播:本地 DashMap 直发 + Redis pub/sub 频道 hub:fanout 转发到其他实例
  • 落库:收到快照后 debounce 写入 editor_unit(整页替换)

§键命名约定

  • project_key 形如 episode:{episodeId},末段解析为分片键 episode_id
  • page_key 形如 page:{pageId},末段解析为 editor_page.id

Structs§

CollaborationRegistry
协作连接注册表(本节点)
PageEditorState
在线编辑者状态(与前端 TranslatorPageEditorState 对齐,snake_case)
PageSnapshot
页面整页快照
ProjectState
项目协作状态(项目内全部在线编辑者)
TryAcquireResult
尝试获取页面锁结果

Functions§

disconnect
处理连接断开:释放锁、移除在线状态、广播
handle_invocation
分发一条客户端 Hub 调用
spawn_fanout
启动跨实例广播订阅(多实例部署时转发事件到本节点连接)