Hocuspocus 4发布:自托管的实时协作后端,替代Google Docs的开源方案

Hocuspocus是一个基于Y.js的即插即用协作后端,最新发布的v4版本带来了更多功能。如果你想在自己的应用中实现实时协作编辑(类似Google Docs),Hocuspocus是最成熟的开源方案之一。

什么是Hocuspocus?

Hocuspocus是由Tiptap团队(YC S23孵化)开发的协作后端,基于Y.js CRDT(冲突自由复制数据类型)实现。它提供了:

  • WebSocket实时通信
  • 文档持久化存储
  • 用户认证和权限管理
  • 可扩展的插件系统
  • SQLite、PostgreSQL等存储后端

快速开始

安装依赖:

npm install @hocuspocus/server @hocuspocus/extension-sqlite

创建一个基本的协作服务器:

import { Server } from '@hocuspocus/server'
import { SQLite } from '@hocuspocus/extension-sqlite'

const server = new Server({
  port: 1234,
  
  async onConnect() {
    console.log('🔮 新用户连接')
  },
  
  async onAuthenticate({ token }) {
    // 验证用户token
    if (token !== 'valid-token') {
      throw new Error('认证失败')
    }
    return { user: { name: 'User' } }
  },
  
  extensions: [
    new SQLite({
      database: 'db.sqlite',
    }),
  ],
})

server.listen()
console.log('协作服务器运行在 ws://127.0.0.1:1234')

与前端集成

配合Tiptap编辑器使用:

import { useEditor, EditorContent } from '@tiptap/react'
import StarterKit from '@tiptap/starter-kit'
import Collaboration from '@tiptap/extension-collaboration'
import { HocuspocusProvider } from '@hocuspocus/provider'

const provider = new HocuspocusProvider({
  url: 'ws://127.0.0.1:1234',
  name: 'my-document',
  token: 'valid-token',
})

function Editor() {
  const editor = useEditor({
    extensions: [
      StarterKit,
      Collaboration.configure({
        document: provider.document,
      }),
    ],
  })
  
  return <EditorContent editor={editor} />
}

主要特性

  • 实时协作:多人同时编辑同一文档,实时同步
  • 离线支持:基于CRDT,断网后重连自动合并
  • 权限控制:细粒度的文档级别权限管理
  • Webhook:支持文档变更通知
  • 可扩展:通过extension机制添加自定义功能

适用场景

  • 团队文档协作工具
  • 在线笔记应用
  • 代码编辑器的实时协作
  • 表单设计器
  • 白板和画布应用

与Google Docs的对比

特性 Hocuspocus Google Docs
自托管
数据控制 完全控制 在Google服务器上
定制性 完全可定制 有限
成本 免费开源 按用户收费
离线支持 ✅ CRDT 有限

总结

Hocuspocus 4为需要实时协作功能的开发者提供了一个成熟的开源方案。如果你正在构建需要多人协作的应用,或者想替代Google Docs等商业服务,Hocuspocus值得考虑。

本文参考来源:Hocuspocus GitHub仓库 | 官方文档

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容