Commit Graph

3 Commits

Author SHA1 Message Date
abdussamedulutas 75d5999b4a #36/#37/#40/#41/#47: WebRTC kütüphanesi, sub-network ve Studio UI
sdk/webrtc/ — kapsamlı RTCEngine kütüphanesi:
  - PeerConnection.js: RTCPeerConnection wrapper; connectionstatechange +
    iceconnectionstatechange her ikisi de izleniyor (eski 'bağlantı kopsa
    fark etmez' hatası bu şekilde önleniyor)
  - Negotiator.js: perfect negotiation (RFC 8829); polite/impolite roller,
    teklif çakışması rollback, ICE adayları sıraya alınıyor
  - StreamManager.js: addStream/replaceTrack/removeStream/setEncodings —
    runtime'da track ekle/çıkar/değiştir, yeniden müzakere gerekmiyor
  - DataChannel.js: birincil veri kanalı, bağlantı canlıyken kapanırsa
    otomatik yeniden oluşturulur, açılana kadar mesaj kuyruğu
  - MediaSources.js: camera/microphone/screen/cameraAndMic fabrika metodları,
    AudioBuffer→MediaStream, canvas.captureStream, AudioContext mix bus
  - FileSender.js: en fazla 5 paralel DataChannel üzerinden dosya transferi,
    progress olayı, 16 KB chunk + bufferedAmountLow akış kontrolü
  - index.js (RTCEngine): tüm alt sistemleri koordine eder; ICE restart
    exponential backoff (1s→2s→4s); Peer.js ile geriye dönük uyumlu

sdk/WebRTC.js → ./webrtc/index.js'e ince re-export (Peer.js değişmedi)

sdk/studio/ — masaüstü-first Miller-kolon UI (#47):
  - Column.js: başlık + arama filtresi + öğe listesi
  - ColumnView.js: yatay kayan kolon yöneticisi, popTo() ile derine git
  - index.js (Studio): Server→Groups→Peers→Devices→Streams→Quality hiyerarşisi;
    WebRTC bağlantısını otomatik başlatır (polite = küçük socketId)
  - style.css: koyu masaüstü teması, aktif öğe vurgusu, ilerleme çubuğu

internal/services/ippressure.go — rastgele atama + sub-network (#40/#41):
  - lockIP/lockNumber/lockCode: önce 256 rastgele deneme, sonra sıralı yedek;
    yüksek bağlantı sayısında O(1) ortalama atama
  - SubNet: /24 sanal alt ağ (10.A.B.0/24); Alloc/Release/Whois metodları
  - alloc|release|whois APSubNet + APSubNetIP HTTP handler'ları eklendi
  - Bağlantı kesildiğinde subnet IP'leri ve prefix otomatik serbest bırakılıyor

sdk/IPPressure.js: allocSubNet/releaseSubNet/allocSubNetIP/releaseSubNetIP/
  querySubNetIP metodları eklendi

go test -race ./... — tüm testler yeşil

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 12:59:16 +03:00
abdussamedulutas c058feb22d Ölçek ayarı, leak sağlamlaştırma ve #27/#28/#29 paritesi
Yüksek bağlantı sayısı + sürekli mesaj trafiği için engine'i sağlamlaştırır;
sınırsız bellek büyümesini (leak) kapatır; 1.0.0 engine parite issue'larını
(oda/pairing/sanal adresleme) tamamlar.

Ölçek/pool ayarı (config.ConnConfig, env-tunable, varsayılanlar yüksek):
- OutboundBuffer 1024, MaxMessageSize 16 MiB, read/write buffer, ping/pong/write
  timeout'ları yapılandırılabilir.
- gorilla WriteBufferPool (paylaşımlı sync.Pool) — yüksek bağlantıda büyük
  bellek tasarrufu. 150 bağlantı + ağır trafikte RSS ~43 MB.
- Dolu buffer'da düşür-ama-kapatma → relay teslimat %99.98 (150 bağlantı).

Leak düzeltmeleri (churn altında sınırsız büyüme yok):
- Pairing ters-indeksi (pairedBy): disconnect'te X'e değen tüm pair kenarları
  O(derece) temizlenir; tek-yönlü bekleyen istek çöpü kalmaz.
- Davet bekleme listesi: istemci waiting odalarını tutar, disconnect'te düşülür.
- realloc artık farklı adres verir (önce al sonra bırak).

#27/#28/#29 paritesi + ifexistsJoin; kapsamlı parite + leak testleri eklendi.
go build/vet/test -race ./... yeşil (18 servis testi). Detay: decisions.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:43:54 +03:00
abdussamedulutas 835f0b5f2e Go engine portu (0.1.0 çekirdek) — Node.js engine'i race-free Go'ya taşı
MWSE engine'i (Source/) performans odaklı, eşzamanlılık-güvenli bir Go
projesine taşır. WSTS tel sözleşmesi (SDK giriş/çıkış) korunur; frontend
dokunulmadan çalışmaya devam eder.

- internal/protocol: WSTS encode/decode (request/response/stream/signal)
- internal/ws: Client (bağlantı-başına tek-yazıcı), Room (RWMutex + snapshot
  broadcast), Hub (kayıt + router + event bus), Server (yaşam döngüsü, saQut
  heartbeat). #22 "ayrılırken-yazma" race'i yapısal olarak çözüldü.
- internal/services: YourID, Session, Auth, Room, IPPressure, DataTransfer
  portu (Node'daki bariz bug'lar düzeltildi; tel şekilleri korundu).
- internal/config, internal/httpserver: env config, statik + /api + graceful
  shutdown.
- loadtest/: ayrı modül — ping/relay yük testi + benchmark istemcisi.

go build/vet/test -race ./... yeşil. TestLeaveWhileSendRace regresyonu temiz.
Uçtan uca doğrulandı: ping ~140k req/s (p50 ~200µs, 0 hata),
relay ~190k msg/s (%98.5 teslim).

İnsan onayına bırakılanlar REVIEW.md'de; kararlar decisions.md'de;
durum PORT-PROGRESS.md'de. Hiçbir issue kapatılmadı, stable'a dokunulmadı,
deploy/push yapılmadı.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 07:09:36 +03:00