Dify Enterprise 3.11.1 以降が必要です。
コラボレーションを有効にする
Helm chart の values でスイッチを設定します:extraEnv の手動設定は不要です:
- リアルタイムコラボレーション通信をすべて処理する専用の Socket.IO サービス(
<release>-api-websocket)をデプロイします。 - ゲートウェイの
/socket.ioをそのサービスにルーティングします。 - API と Web の ConfigMap に
ENABLE_COLLABORATION_MODEを設定します。 global.consoleApiDomainとglobal.useTLSから Web フロントエンド用のNEXT_PUBLIC_SOCKET_URLを自動生成します(TLS 有効時はwss://)。
仕組み
コラボレーション通信は、コンソール API ドメインの/socket.io パスで Socket.IO プロトコル(WebSocket、HTTP ロングポーリングへのフォールバックあり)を使用します。Chart はこれをメイン API Pod とは別の専用 Deployment として実行します:
websocket Deployment は意図的に 1 レプリカ / 1 gunicorn worker に固定され、
Recreate 更新戦略を使用します。Socket.IO の認証セッションはプロセスメモリに保持されるため、すべてのソケット通信は単一プロセスを共有する必要があります。この Deployment はスケールしないでください。ルームイベントは既存の Redis 設定を通じて配信されるため、メイン API と worker はこれまでどおり独立してスケールできます。
リソース設定
collaboration.websocket で websocket Pod のリソースを上書きできます:
前提条件
- 編集者のブラウザから
global.consoleApiDomainに到達できる必要があります。フロントエンドはwss://<consoleApiDomain>/socket.io(TLS 無効時はws://)に接続します。 - ゲートウェイの前段にあるロードバランサーや Ingress は、コンソール API ドメインでの WebSocket アップグレードを許可する必要があります。
手動設定からの移行
以前にextraEnv で ENABLE_COLLABORATION_MODE / NEXT_PUBLIC_SOCKET_URL を注入してコラボレーションを有効にしていた場合は、それらのエントリを削除し、代わりに collaboration.enabled: true を設定してください。古い extraEnv エントリを残しても問題はありませんが冗長です。コンテナレベルの extraEnv の値は、chart が生成する ConfigMap の値より優先されます。