启用实时协作#
JupyterLite 可以扩展以启用对 WebRTC 上的实时协作的基本支持。
警告
JupyterLite 中对实时协作的支持仍处于实验阶段。
对 JupyterLite 0.1.x 有基本支持。
目前,JupyterLite 0.2.x **没有** 支持,但它在 此问题 中跟踪
注意
在 0.1.0b6
版本之前,WebRTC 文档提供程序直接内置到 JupyterLite 中。虽然在 JupyterLite 演示网站上仍然启用,但此功能已移至 单独的存储库,以允许更多可配置性、UI 自定义以及与一些针对上游依赖项的补丁进行独立迭代。
什么是实时协作?#
实时协作(简称 RTC)使用户能够同时协作同一个文档。
以下是在 JupyterLab 中的示例屏幕截图
由于 JupyterLite 重用了大多数上游 JupyterLab 组件和插件,因此它也几乎自动获得了对 RTC 的支持。
与 JupyterLab 相比,主要区别在于
用户内容是分散的:用户将笔记本和文件存储在自己的浏览器本地存储中
与对等方的通信以及初始同步机制通过 WebRTC 完成,而不是 JupyterLab 中的 WebSocket Jupyter Server 处理程序
但是,会建立到一个或多个 *WebRTC 信号服务器* 的初始 WebSocket 连接,以帮助发现其他对等方
可以使用
jupyter-config-data
中的fullWebRtcSignalingUrls
配置自定义信号服务器列表
在 JupyterLite 中启用 RTC#
作为一项具有隐私考虑的进阶功能,启用协作编辑需要一些步骤来准备、部署和使用。
安装文档提供者扩展#
添加 jupyterlab-webrtc-docprovider
,它提供了一个 预构建的 JupyterLab 扩展 到您的构建环境的 environment.yml
或 requirements.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
类似地,username
和 usercolor
可以通过设置或查询参数提供。这在外部应用程序中生成链接时可能很有用,该链接已经提供了身份。
提示
或者,这些可以通过 overrides.json
配置,如 jupyterlab-webrtc-docprovider
存储库中所述。
用户使用以下组合在房间中分组在一起:
房间前缀:默认情况下,主机,例如
jupyterlite.example.com
或myserver:5000
从查询字符串参数或设置中解析的房间名称,例如
my-custom-room
然后将这些值一起哈希,这样对上游信令服务器的请求包含更不容易识别的信息。
目前,必须配置 collaborative
和 room
才能启用 RTC。在这种情况下,用户可以一起协作文档
有关如何配置 jupyter-lite.json
的更多详细信息,请参阅文档的 参考 部分。