statamic/collaboration

Statamic Pro 的实时协作和多用户创作。

安装数: 43,627

依赖项: 0

建议者: 0

安全: 0

星标: 33

关注者: 7

分支: 13

公开问题: 13

语言:JavaScript

类型:statamic-addon

v1.0.0 2024-05-09 14:45 UTC

README

协作

Statamic Pro 的实时协作和多用户创作。

功能

  • 当多人打开相同条目时,显示存在指示器。
  • 当其他人聚焦时,字段会被锁定。
  • 字段值的更新会反映给所有人。

安装

您可以使用单个命令安装和配置 Collaboration 扩展插件

php please install:collaboration

该命令将安装 statamic/collaboration 扩展插件,设置 Laravel 的广播脚手架,并提示您选择要使用的广播驱动程序。

有关每个广播驱动的具体信息,请参阅以下内容

Laravel Reverb

install:collaboration 命令将 Laravel Reverb 安装到您的应用程序中。安装后,运行 php artisan reverb:start 以运行 Reverb 的 WebSocket 服务器,然后 Collaboration 扩展插件应在控制面板中开始工作。

当您将应用程序部署到服务器时,需要以守护进程运行 Reverb WebSocket 服务器(php artisan reverb:start)。如果您使用 Laravel Forge,则在网站的 "应用程序" 面板中有一个 Reverb 开关。

有关 Reverb 的更多信息,请参阅 Laravel 文档

Pusher

install:collaboration 命令将 Pusher 的 PHP SDK 安装到您的应用程序中。安装后,您应将 Pusher 凭据添加到您的 .env 文件。

PUSHER_APP_ID="your-pusher-app-id"
PUSHER_APP_KEY="your-pusher-key"
PUSHER_APP_SECRET="your-pusher-secret"
PUSHER_HOST=
PUSHER_PORT=443
PUSHER_SCHEME="https"
PUSHER_APP_CLUSTER="mt1"

您还应确保已启用 "Client Events" 设置(可在 Pusher 控制台的 "应用设置" 页面找到)。

有关更多信息,请参阅 Pusher

其他

  1. 如果您计划使用不同的广播驱动程序,您需要执行以下额外步骤才能使其工作
  2. 安装并配置您的广播驱动程序(显然)
  3. 在您的 .env 中更新 BROADCAST_DRIVER
  4. 有关更多信息,请参阅我们文档站点上的此指南
Statamic.booting(() => {
    Statamic.$echo.config(() => ({
        broadcaster: "pusher",
        key: Statamic.$config.get('broadcasting.pusher.key'),
        cluster: Statamic.$config.get('broadcasting.pusher.cluster'),
        wsHost: Statamic.$config.get('broadcasting.pusher.host'),
        wsPort: Statamic.$config.get('broadcasting.pusher.port'),
        wssPort: Statamic.$config.get('broadcasting.pusher.port'),
        forceTLS: false,
        encrypted: true,
        disableStats: true,
        enabledTransports: ["ws", "wss"],
    }));
});

配置

声音效果

默认情况下,Collaboration 扩展插件在其他用户加入和离开条目时播放声音效果。

如果您想禁用这些声音效果,可以发布配置文件(通过 php artisan vendor:publish --tag=collaboration)并将 sound_effects 设置为 false

// config/collaboration.php

return [
    'sound_effects' => false,
];

配置

声音效果

默认情况下,Collaboration 扩展插件在其他用户加入和离开条目时播放声音效果。

如果您想禁用这些声音效果,可以发布配置文件(通过 php artisan vendor:publish --tag=collaboration)并将 sound_effects 设置为 false

// config/collaboration.php

return [
    'sound_effects' => false,
];

高级用法

当字段的 "元数据" 更新时,它将被广播到频道中的其他用户。如果您有一个包含大量元数据的字段类型,并且它被更新(其中一些可能只提供初始状态而永远不会更改),您可以考虑指定应该广播的字段。这可以帮助保持消息大小较小并提高性能。

在字段类型的 preload 方法中,您可以使用特殊的 __collaboration 键来列出字段。

public function preload()
{
    return [
        'hello' => 'world',
        'foo' => 'bar',
        '__collaboration' => ['foo'],
    ];
}

当元数据更新时,只有 foo 值将被广播。其余值将自动合并。