36 puan yazan xguru 2025-10-27 | 8 yorum | WhatsApp'ta paylaş
  • Yalnızca birkaç satır kodla, sunucu olmadan birbirine bağlanan çok oyunculu web uygulamaları geliştirmeyi mümkün kılan bir kütüphane
  • Tarayıcıdaki WebRTC temel alınarak, herkese açık ağlar sinyalleşme (signaling) kanalı olarak kullanılıyor ve P2P eşleştirme ile iletişim otomatikleştiriliyor
    • BitTorrent, Nostr, MQTT, IPFS, Supabase, Firebase seçeneklerinden biri seçilerek sunucusuz eş keşfi yapılabiliyor
    • Sinyalleşme sonrasındaki uygulama verileri, aracı bir ortamdan geçmeden P2P + E2E şifreleme ile aktarılıyor
  • Rooms/yayın, otomatik serileştirme, büyük veriler için chunking/throttling, ilerleme olayları, oturum verisi şifreleme, akış metadata'sı gibi yüksek seviyeli soyutlamalar sunuyor
  • Yalnızca tarayıcıda değil, Node/Deno/Bun üzerinde de çalışıyor; ayrıca TURN sunucusu yapılandırması, React hook'ları, sunucu tarafı çalıştırma gibi gerçek kullanım özelliklerini destekliyor
  • Herkese açık altyapıyı yapılandırma gerektirmeden kullanma yaklaşımı sayesinde, çeşitli deneyler ve prototipleme için oldukça uygun

8 yorum

 
kimjoin2 2025-10-27

TURN sunucusunu atalarınız mı sağlıyor?

 
helio 2025-10-28

Kaynak koduna 'stun:stun.cloudflare.com:3478' gömülmüş gibi görünüyor.

 
kimjoin2 2025-10-28

stun değil, turn.
stun, basitçe STUN ölçütüne göre kim olduğunuzu söyleyen bir şey olduğu için açık sunucular biraz var,
ama turn trafiği relay etmek zorunda olduğundan (pahalı olduğu için) ya para verip kullanmanız ya da kendiniz kurmanız gerekiyor.
Ör.) https://github.com/coturn/coturn
Böyle bir şey.

Yalnızca stun ile iletişimin mümkün olduğu durumlar elbette çok oluyor ama buna basitçe "oluyor" demek biraz.....
Oluyor...... gerçi oluyor ama..... hımm.. gibi bir his veriyor.

 
skageektp 2025-10-29

Eğer p2p eşleştirmeyse TURN gerekmez, değil mi?

 
kimjoin2 2025-10-29

WebRTC’de bahsettiğiniz "p2p eşleştirme"nin neyi kastettiğine göre değişir gibi görünüyor.

  1. Karşılıklı olarak UDP üzerinden paket iletişimi yapılabilen durum

  2. Karşılıklı olarak yalnızca STUN’un bildirdiği adreslerin bilindiği durum

  3. durumsa, dediğiniz gibi TURN gerekmez.

  4. durumda da koşullar elverişliyse ve karşılıklı UDP iletişimi başarılı olmuşsa TURN gerekmez.

  5. durumda karşılıklı UDP üzerinden paket iletişimi başarısız olduğunda TURN gerekir.

Başarısızlığa yol açan etkenler şunlar olabilir:

  • peer’ın symmetric NAT arkasında olması gibi nedenlerle STUN’un bulduğu adresin (portunun) kullanılamaması
  • ağın herhangi bir ara noktasında yalnızca web trafiğine izin verilmesi (80,443)
  • ağın herhangi bir ara noktasında UDP’nin engellenmiş olması
  • bir tarafın yalnızca IPv4, diğer tarafın yalnızca IPv6 kullanması
  • vb.?

Bu durumlarda TURN kullanılmalıdır.

(yalnızca IPv4 <-> yalnızca IPv6 durumunun çalışmadığını, hafızamı doğrularken ilk kez öğrendim)

 
skageektp 2025-10-30

Evet, yani 2 numara. "Sunucusuz birbirine bağlanma", "kütüphane" denmiş ama siz biraz fazla şey beklemiyor musunuz...

 
kimjoin2 2025-10-30

Bahsetmek istediğiniz nokta tam olarak hangisi?

  1. STUN’un bildirdiği adres (+port) tek başına bağlantı kurmak için yeterli olduğu için TURN sunucusuna gerek yoktur. Dolayısıyla “sunucu olmadan birbirine bağlanma” ifadesi metin olarak aynen doğrudur.
    -> Eğer mesele buysa, demek ki benim bilgim eskiymiş. Bildiğim (paylaştığım) bilgilerden sonra durumun hangi noktada değiştiğini anlatırsanız sevinirim~!
  2. TURN sunucusu gerekir ama sonuçta bu bir kütüphane, o kadarı tolere edilebilir.
    -> skageektp’nin söylediği doğru. Sonuçta bu bir kütüphane olduğu için o kadarı tolere edilebilir. Ben fazla hassas davrandım.

Ben ise
3. Doğru düzgün kullanmak için yalnızca STUN yeterli değil, TURN da gerekiyor; bu yüzden biraz fazla abartılmış~
demek istiyordum.

 
kimjoin2 2025-10-29

1 ve 2 numaralı açıklamalar için

  1. Karşılıklı UDP üzerinden paket iletişiminin mümkün olduğu durum -> Karşılıklı peer'lerin UDP üzerinden paket iletişimi yapabildiği durum
  2. Karşılıklı olarak yalnızca STUN'ın bildirdiği adresi bildikleri durum -> Karşılıklı peer'lerin yalnızca STUN'ın bildirdiği adresi bildiği durum

şeklinde düzeltiyorum. Orijinal yazıda yanlış anlaşılma payı var.