- Media (voice/video/image/file): private bucket, presigned PUT upload, reference-only publish, membership-gated presigned GET for viewing - Avatars: public bucket, presigned PUT + direct public URL, profile.update event - messages.media_key + media_meta (migration 1720000000005_media) - Explicit MinIO region on presigning client (avoids getBucketRegion network call) - Event type values sourced from EventType constants (no raw string literals) - Web: attach button, MediaView renderer, avatar upload in topbar Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BFRyKxkKEjfAgpXygzoNiD
54 lines
1.3 KiB
JSON
54 lines
1.3 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/centrifugal/centrifugo/master/internal/config/schema.json",
|
|
"client": {
|
|
"allowed_origins": ["*"]
|
|
},
|
|
"http_api": {
|
|
"enabled": true
|
|
},
|
|
"engine": {
|
|
"type": "redis",
|
|
"redis": {
|
|
"address": "redis://redis:6379"
|
|
}
|
|
},
|
|
"channel": {
|
|
"namespaces": [
|
|
{
|
|
"name": "conv",
|
|
"presence": true,
|
|
"join_leave": true,
|
|
"force_push_join_leave": true,
|
|
"allow_presence_for_subscriber": true,
|
|
"history_size": 100,
|
|
"history_ttl": "300s",
|
|
"force_recovery": true,
|
|
"subscribe_proxy_enabled": true,
|
|
"subscribe_proxy_name": "backend"
|
|
},
|
|
{
|
|
"name": "user",
|
|
"presence": true,
|
|
"join_leave": true,
|
|
"history_size": 100,
|
|
"history_ttl": "300s",
|
|
"force_recovery": true,
|
|
"subscribe_proxy_enabled": true,
|
|
"subscribe_proxy_name": "backend"
|
|
},
|
|
{
|
|
"name": "eph",
|
|
"allow_publish_for_subscriber": true,
|
|
"subscribe_proxy_enabled": true,
|
|
"subscribe_proxy_name": "backend"
|
|
}
|
|
]
|
|
},
|
|
"proxies": [
|
|
{
|
|
"name": "backend",
|
|
"endpoint": "http://backend:4000/centrifugo/subscribe",
|
|
"timeout": "3s"
|
|
}
|
|
]
|
|
}
|