/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
| Metot | Endpoint | Açıklama | Gerekli Header |
|---|---|---|---|
POST | /broadcasting/auth | WebSocket kanalına abone olabilmek için yetkilendirme (handshake) yapar | Authorization |
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ış:
Kanalı belirt
İstemci (örn. Laravel Echo veya Pusher kütüphanesi) dinlemek istediği kanalı belirtir.
Otomatik yetkilendirme
Kütüphane arka planda otomatik olarak
POST /broadcasting/auth endpoint’ine elindeki token ile istek atar.Dinlenebilir kanallar
Sistemde şu an için dışarıya açık ve dinlenebilir tek bir ana kanal yapısı bulunmaktadır.| Kanal adı | Açıklama | Örnek |
|---|---|---|
chat-log.{tenantId} | Belirtilen tenant’a (kliniğe) ait canlı sohbet loglarını ve yeni mesajları yayınlar. | chat-log.5 (ID’si 5 olan tenant’ın sohbet kanalı) |
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.
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
Bearer {access_token} formatında geçerli bir access token.Body
Kütüphanenin gönderdiğichannel_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):Yetkilendirme ve kısıtlamalar özeti
| Konu | Kural |
|---|---|
| Token zorunluluğu | Standart auth:api kuralları geçerlidir. |
| Multi-tenant izolasyonu | Soket kanalları da REST API’ler gibi katı bir tenant izolasyonuna tabidir. |
| Yön | Tek yönlüdür (Server → Client). API tüketicisi WebSocket kanalı üzerinden sunucuya mesaj gönderemez. |
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.