Skip to main content
Base URL: /broadcasting/auth
Bu API, istemcilerin yeni bir kayıt oluşturması veya veri çekmesi için kullanılmaz. Bu endpoint, istemcinin güvenli (private) bir WebSocket kanalına abone olabilmesi (subscribe) için gerekli olan yetkilendirme (handshake) işlemini yapar. İstemciler kanala bağlandıktan sonra sadece gelen olayları (events) dinlerler.

Endpoint özeti

Broadcasting (soket) kavramı ve çalışma akışı

Sistemimizde, örneğin sohbetlere (conversations) yeni bir mesaj geldiğinde uygulamayı yenilemeden (refresh atmadan) mesajın ekrana düşmesi için WebSocket altyapısı kullanılır. Güvenlik gereği, bir hastanın veya kliniğin mesajlarının başkaları tarafından dinlenmesini engellemek için tüm kanallar Private (özel) olarak yapılandırılmıştır. İstemci tarafındaki genel akış:
1

Bearer token al

İstemci sisteme giriş yapar ve standart API Bearer Token’ını alır.
2

Kanalı belirt

İstemci (örn. Laravel Echo veya Pusher kütüphanesi) dinlemek istediği kanalı belirtir.
3

Otomatik yetkilendirme

Kütüphane arka planda otomatik olarak POST /broadcasting/auth endpoint’ine elindeki token ile istek atar.
4

Sunucu onayı

Sunucu kullanıcının bu kanalı dinlemeye yetkisi olup olmadığını kontrol eder. Yetkisi varsa soket bağlantısına onay verir.

Dinlenebilir kanallar

Sistemde şu an için dışarıya açık ve dinlenebilir tek bir ana kanal yapısı bulunmaktadır.

Erişim kontrolü (katı iş kuralları)

  • Bu kanala abone olmak isteyen kullanıcının geçerli bir API token’ı olmalıdır.
  • Kullanıcının, kanal adında geçen {tenantId} numaralı tenant’a sistem üzerinden erişim yetkisi olmak zorundadır.
Başka bir kliniğe (tenant’a) ait olan kanalı dinleme isteği reddedilir ve sunucu 403 Forbidden hatası döner.

Yetkilendirme endpoint’i kullanımı

Bu endpoint genellikle manuel olarak çağrılmaz; kullandığınız WebSocket istemci kütüphanesi (Pusher JS, Laravel Echo vb.) tarafından otomatik olarak tetiklenir.

Zorunlu header

string
required
Bearer {access_token} formatında geçerli bir access token.

Body

Kütüphanenin gönderdiği channel_name (örn. private-chat-log.5) ve socket_id bilgilerini içerir.

İstemci (frontend / mobil) entegrasyon örneği

Bu API’yi kullanacak olan arayüz geliştiricisinin yapması gereken örnek konfigürasyon (JavaScript / Laravel Echo):
Dinlenecek tam olay (event) adları uygulamanızın yayınladığı isimlere göre .NewChatMessageEvent veya benzeri bir formatta olacaktır.

Yetkilendirme ve kısıtlamalar özeti

Mesaj göndermek için REST endpoint’i kullanılmalıdır: POST /conversations/{id}/messages. WebSocket kanalı sadece gelen olayları dinlemek (subscribe) içindir.