Repository navigation
Realtime ve Webhook
English · Türkçe · Languages / Diller
Kapsam: JSON API Forge 0.5.1 · İnceleme: 17 Eylül 2026 · Dil: Türkçe
Event channel yayınlama ve abonelik izinlerini ayrı tutar. Memory backend tek süreçte, Redis pub/sub birden fazla worker/host arasında bildirim yaymak için kullanılır. İkisi de dayanıklı kuyruk veya geçmiş olay deposu değildir.
{
"realtime": {"backend": "memory"},
"event_channels": [
{
"name": "updates", "path": "events/updates",
"publish_permission": "updates.publish", "subscribe_permission": "updates.subscribe",
"websocket_enabled": true, "sse_enabled": true,
"max_message_bytes": 16384, "queue_size": 128,
"max_websocket_connections": 100, "max_sse_connections": 100,
"allowed_origins": ["http://localhost:3000"],
"heartbeat_seconds": 15,
"websocket_message_requests": 60,
"websocket_message_window_seconds": 60,
"websocket_message_burst": 15
}
]
}Rollere bu izinleri ayrıca verin. Varsayılan path events/<name> biçimindedir; yayınlama, /stream ve /ws yolları gerçek route çıktısında görünür. Mesaj zarfı ve yanıt biçimi için RealtimeSupport örneğini ve uygulamanın OpenAPI'sini kullanın.
API key'i URL query'sine koyma seçenekleri varsayılan olarak kapalıdır. Native istemciler header gönderebilir; browser'ın yerleşik WebSocket/EventSource API'lerinin keyfi header desteği farklıdır. Ön yüzünüz için bu kısıtı dikkate alan güvenli kimlik aktarımını tasarlayın; uzun ömürlü yönetici anahtarını frontende gömmeyin.
Origin allowlist ve subscribe/publish izinlerini ayrı değerlendirin. Public subscribe, public publish anlamına gelmez. Aynı uygulamaya erişebilen iki tenant'ın aynı event kanalında hangi payload'ları alacağını açıkça tasarlayın; CRUD row filter'larının her yayın mesajına otomatik uygulanacağını varsaymayın.
Yavaş tüketici sınırsız RAM büyümesine yol açmamalıdır. Kuyruk/bağlantı limitlerini gerçek mesaj hızına göre seçin. Kanal mesaj sınırı küçültülebilir; süreç WebSocket tavanı 1 MiB'dir. Reconnect sonrasında kayıp mesajların otomatik replay edildiği vaat edilmez.
Güvenilir yeniden senkronizasyon için istemci tekrar bağlandığında güncel durumu HTTP API'den çekebilir. Her olayın kaybolmadan işlenmesi gerekiyorsa durable broker/outbox ve acknowledgment tasarımı gerekir.
Native ASGI ve WebSocket upgrade geçiren proxy kullanın. SSE için proxy buffering ve idle timeout değerlendirilmelidir. Passenger/WSGI'nin conventional HTTP yolu, kalıcı WebSocket veya Editör çağrı taşıması sağlamaz.
Bu alan dış sistemlere ilişkin webhook sözleşmesini OpenAPI'de belgeler. Tek başına outbound webhook dispatcher, retry queue, imzalama veya teslim garantisi yaratmaz. Webhook göndermek gerekiyorsa uygun hook/worker ve güvenilir outbox akışı yazın.
Bu sayfa aşağıdaki sabit commitlerdeki davranışı açıklar. Yeni bir sürümde aynı davranışın sürdüğünü varsaymayın.
main/framework/events.pymain/framework/routers/project.pymain/framework/config.pyexampleApps/app/RealtimeSupport/config/50-events.json