Skip to content

Pycrdt-websocket

Pycrdt-websocket 是一个用于 pycrdt 的异步 WebSocket 连接器。

构建状态 代码风格: black


文档: https://jupyter-server.github.io/pycrdt-websocket

源代码: https://github.com/jupyter-server/pycrdt-websocket


Pycrdt-websocket 是一个用于构建 WebSocket 服务器和客户端的 Python 库,旨在连接和同步共享文档。 它可以用来创建协作式的 Web 应用程序。

以下图示展示了一个典型的架构。目标是让多个客户端共享一个文档。

每个客户端都有一个 Doc 实例,表示其视图中的文档。共享文档也在服务器端的 room 中存在。从概念上讲,room 是客户端共同协作文档的地方。客户端连接的 WebSocket 通过端点路径指向相应的 room。在下面的示例中,客户端 A 和 B 连接到路径为 room-1 的 WebSocket,因此两者都进入了一个名为 room-1 的房间。所有 Doc 同步的逻辑由 WebsocketProvider 处理。

每次更新共享文档时,可以使用 store 将其持久化到磁盘,该存储可以是文件或数据库。

flowchart TD
    classDef room1 fill:#f96
    classDef room2 fill:#bbf
    A[Client A<br>room-1]:::room1 <-->|WebSocket<br>Provider| server(WebSocket Server)
    B[Client B<br>room-1]:::room1 <-->|WebSocket<br>Provider| server
    C[Client C<br>room-2]:::room2 <-->|WebSocket<br>Provider| server
    D[Client D<br>room-2]:::room2 <-->|WebSocket<br>Provider| server
    server <--> room1((room-1<br>clients: A, B)):::room1
    server <--> room2((room-2<br>clients: C, D)):::room2
    A <-..-> room1
    B <-..-> room1
    C <-..-> room2
    D <-..-> room2
    room1 ---> store1[(Store)]
    room2 ---> store2[(Store)]

文档

针对中文版

# 调试
mkdocs serve -f mkdocs.cn.yml serve

# 部署到github pages
mkdocs build -f mkdocs.cn.yml gh-deploy