chat-log.{tenantId} kanalına abone olmak istediğinde, Pusher önce /api/broadcasting/auth endpoint’ine bir istek atar ve yetkilendirme imzası bekler.
Normal şartlarda bu endpoint’i elle çağırmanıza gerek yoktur. pusher-js (veya uyumlu bir Pusher istemcisi) abonelik akışının bir parçası olarak otomatik çağırır. Kendi WebSocket kütüphanenizi yazıyorsanız bu sayfa detayları verir.
Endpoint
İstek gövdesi
Pusher protokolü şu iki alanı gönderir:İstemci WebSocket bağlantısının benzersiz kimliği. pusher-js bunu otomatik üretir ve gönderir.
Abone olunmak istenen kanalın adı. Private kanallarda
private- önek’i ile başlar. Örn. private-chat-log.12.Başarılı yanıt
Kimlik doğrulama
- Bearer token zorunludur. Token yok veya geçersizse
401 Unauthorizeddöner. - X-Tenant header’ı gerekmez. Tenant kontrolü, kanal adının içindeki
{tenantId}üzerinden yapılır. Flextell, abone olmak istediğiniz tenant’a erişiminiz olup olmadığını otomatik doğrular.
Olası hatalar
| Durum | Sonuç |
|---|---|
| Token yok/geçersiz | 401 Unauthorized |
Kanal chat-log.<id> formatında değil | 403 Forbidden (tanımsız kanala abonelik) |
| Kullanıcı o tenant’a erişemiyor | 403 Forbidden |
| Tenant bulunamıyor | 403 Forbidden |
subscription_error callback’i ile yakalayabilirsiniz.
pusher-js ile otomatik yetkilendirme
pusher-js kullandığınızdaauth.headers ayarı sayesinde Bearer token her auth çağrısına otomatik eklenir:
authEndpoint’e çağrı atar ve alınan imzayla kanalı açar.
Backend-tarafı (server-side) abone olma
Sunucudan sunucuya dinleme yapmak istiyorsanız (ör. bir entegrasyon servisi) Pusher’ın sunucu SDK’larından birini kullanabilir ve kanala/broadcasting/auth üzerinden abone olabilirsiniz. Bu tarz kullanımlarda genellikle sürekli bir WebSocket bağlantısı yerine webhook veya doğrudan REST poll önerilir.
Token yenileme ile etkileşim
Access token’ınızın süresi dolduğunda mevcut WebSocket bağlantısı çalışmaya devam eder; ancak yeni bir kanala abone olmaya çalışırsanız/broadcasting/auth isteği 401 döner. Bu durumda:
- Refresh Token akışıyla yeni bir access token alın.
- Pusher istemcinizin
auth.headers.Authorizationdeğerini güncelleyin. - Gerekirse yeniden bağlanın (
pusher.disconnect()+ yeninew Pusher(...)örneği).