@ados-agora/协作-客户
反应客户端钩 @adonis-agora/collaboration 协作文件、存在、定位注释和版本控制,自动选择运输(Hocuspocus 自我托管或PartyKit边缘).
反应 18/19 超出零依赖性 yjs · 无害环境管理.
安装
pnpm add @adonis-agora/collaboration-client
服务器侧: 安装 @adonis-agora/collaboration 运行 node ace collaboration:init 以发布这些钩子所消耗的 REST 路线.
使用量
包装您的应用程序一次 :
import { CollaborationProvider } from '@adonis-agora/collaboration-client'
<CollaborationProvider
baseUrl="https://api.app"
getHeaders={() => ({ cookie: sessionCookie })}
>
<App />
</CollaborationProvider>
然后根据协作视图:
import {
useCollabDoc,
useAwareness,
useComments,
useVersions,
} from '@adonis-agora/collaboration-client'
function Writing({ docName }: { docName: string }) {
// Y.Doc shared per docName (cached across mounts), + connection status
const { doc, status, error } = useCollabDoc(docName)
const { peers } = useAwareness(docName) // who's online
const { comments, create, resolve, remove } = useComments(docName, 'text')
const { versions, create: createVersion, restore } = useVersions(docName)
if (status === 'error') return <p>{error?.message}</p>
return (
<>
{/* feed `doc` into Tiptap / ProseMirror / Monaco… */}
{peers.map((peer) => <Avatar key={peer.clientId} name={peer.name} />)}
</>
)
}
如何运作
useCollabDoc从GET {baseUrl}/collaboration/token?doc=<name>(您的认证中间软件保护此路径).- 反应是
engine字段选择传送:yjs→HocuspocusProvider对抗Adonis服务器(wsUrl路径)partykit→YPartyKitProvider直奔云霄的房间
- 评论意见和版本如下: 资源,不是 CRDT 状态——它们通过服务器软件包的存储在您的数据库中生活.
- 会话幸存组件卸载; 1
Y.Doc每个文件名每个提供者.
自定义运输
给工厂注入同步引擎:
<CollaborationProvider baseUrl="…" createTransport={(info, doc, docName) => new MyTransport(info, doc)}>
API 密码
| 钩子 | 回返 |
|---|---|
useCollabDoc(docName) | { doc: Y.Doc, status: 'connecting'|'connected'|'disconnected'|'error', error } |
useAwareness(docName) | { peers: CollabPeer[], status } |
useComments(docName, space?) | { comments, loading, error, refresh, create, resolve, remove } |
useVersions(docName) | { versions, loading, error, refresh, create, restore } |
许可证
麻省理工学院