启用实时协作#

JupyterLite 可以扩展以启用对 WebRTC 上的实时协作的基本支持。

警告

JupyterLite 中对实时协作的支持仍处于实验阶段。

对 JupyterLite 0.1.x 有基本支持。

目前,JupyterLite 0.2.x **没有** 支持,但它在 此问题 中跟踪

注意

0.1.0b6 版本之前,WebRTC 文档提供程序直接内置到 JupyterLite 中。虽然在 JupyterLite 演示网站上仍然启用,但此功能已移至 单独的存储库,以允许更多可配置性、UI 自定义以及与一些针对上游依赖项的补丁进行独立迭代。

什么是实时协作?#

实时协作(简称 RTC)使用户能够同时协作同一个文档。

以下是在 JupyterLab 中的示例屏幕截图

rtc-demo

由于 JupyterLite 重用了大多数上游 JupyterLab 组件和插件,因此它也几乎自动获得了对 RTC 的支持。

与 JupyterLab 相比,主要区别在于

  • 用户内容是分散的:用户将笔记本和文件存储在自己的浏览器本地存储中

  • 与对等方的通信以及初始同步机制通过 WebRTC 完成,而不是 JupyterLab 中的 WebSocket Jupyter Server 处理程序

    • 但是,会建立到一个或多个 *WebRTC 信号服务器* 的初始 WebSocket 连接,以帮助发现其他对等方

    • 可以使用 jupyter-config-data 中的 fullWebRtcSignalingUrls 配置自定义信号服务器列表

在 JupyterLite 中启用 RTC#

作为一项具有隐私考虑的进阶功能,启用协作编辑需要一些步骤来准备、部署和使用。

安装文档提供者扩展#

添加 jupyterlab-webrtc-docprovider,它提供了一个 预构建的 JupyterLab 扩展 到您的构建环境的 environment.ymlrequirements.txt 中,或者使用以下方法之一交互式安装:

                 pip install jupyterlab-webrtc-docprovider
mamba install -c conda-forge jupyterlab-webrtc-docprovider
conda install -c conda-forge jupyterlab-webrtc-docprovider

只要 ignore_sys_prefix 未启用,扩展将被发现并包含在下一个 jupyter lab build 中。

启用协作标志#

在适当的 jupyter-lite.json 配置文件中,在 jupyter-config-data 中设置 collaborative 标志设置

{
  "jupyter-config-data": {
    "collaborative": true
  }
}

请注意,每个 JupyterLite 应用程序 可以使用自己的 jupyter-lite.json 文件来覆盖全局默认值。

配置房间和身份#

在 JupyterLite 中启用 RTC 遵循与 JupyterLab 3.1 中相同的行为,其中实时协作是可选功能。

除了 collaborative 标志外,最终用户还必须在 URL 中指定 room 查询参数。此类 URL 的示例如下:

https://your-lite-deployment.example.com/lab/index.html?room=4869637241

类似地,usernameusercolor 可以通过设置或查询参数提供。这在外部应用程序中生成链接时可能很有用,该链接已经提供了身份。

提示

或者,这些可以通过 overrides.json 配置,如 jupyterlab-webrtc-docprovider 存储库中所述。

用户使用以下组合在房间中分组在一起:

  • 房间前缀:默认情况下,主机,例如 jupyterlite.example.commyserver:5000

  • 从查询字符串参数或设置中解析的房间名称,例如 my-custom-room

然后将这些值一起哈希,这样对上游信令服务器的请求包含更不容易识别的信息。

目前,必须配置 collaborativeroom 才能启用 RTC。在这种情况下,用户可以一起协作文档

rtc-rtd

有关如何配置 jupyter-lite.json 的更多详细信息,请参阅文档的 参考 部分。