abdussamedulutas
5ebd111af0
endPair/disconnect: WebRTC tamamen kapatılıyor + tiles temizleniyor
...
sdk/Peer.js — endPair():
- this.rtc?.destroy() eklendi
- Yerel akışlar durur, RTCPeerConnection kapanır
sdk/index.js — sinyal handler'ları:
- end/pair: peer.rtc?.destroy() (alan taraf da kapatır)
- peer/disconnect: peer.rtc?.destroy() (WebSocket kopunca RTC da kapanır)
public/studio/Studio.js:
_clearPeerTiles(peerId):
- data-peer-id dataset'i ile local + remote grid'den tile'ları kaldırır
- Gizli <audio> elemanını srcObject=null + remove() ile temizler
- CSS.escape ile güvenli selector
tile.dataset.peerId: _addLocalTile ve _addRemoteTile her ikisinde eklendi
tile._audioEl: ses tile'larında referans saklanır (clearPeerTiles için)
_watchIncoming: peer.rtc.on('disconnected') → clearPeerTiles + rebuildPeerItems
end/pair handler: clearPeerTiles(from) çağrısı eklendi
peer/disconnect handler: clearPeerTiles(peer.socketId) çağrısı eklendi
_addLocalTile/_addRemoteTile: peerLabel yerine peer objesi alır
go test -race ./... — yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 14:59:47 +03:00
abdussamedulutas
d468c95adf
WebRTC sinyal fix + reaktif eşler kolonu + anlık disconnect
...
sdk/Peer.js — :rtcpack: her zaman WebSocket üzerinden:
- RTC bağlandıktan sonra renegotiasyon (yeni stream ekleme) sırasında
ICE adayları DataChannel'a yönlendiriliyordu → bağlantı kurulamıyordu
- forceWS = pack.type === ':rtcpack:' → yönlendirme mantığını atlar,
her koşulda WebSocket kullanır
- Signalingi writable flag da engellemez (rtcpack her zaman geçer)
sdk/index.js — peer/disconnect tam işleme:
- pairs.delete(id) eklendi (kopan eş pairs'ten çıkar)
- me.emit('peer/disconnect', peer) eklendi (Studio dinleyebilsin)
public/studio/Studio.js — reaktif eşler kolonu:
- _peersCol referansı: _pushPeersColumn'da saklanır
- _rebuildPeerItems(): mwse.pairs'i okuyup Column.setItems() çağırır
→ kolon her zaman anında güncellenir (tıklama gerekmez)
- Olaylar: accepted/pair + end/pair + peer/disconnect → _rebuildPeerItems()
- Kabul eden taraf: _pushPeersColumn yoksa aç, varsa rebuild
- Disconnect status bar'da kırmızı hata mesajı
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 14:35:33 +03:00
abdussamedulutas
3736d78dfe
Studio: eşleşme akışı tam çalışır hale getirildi
...
sdk/index.js:
- accepted/pair sinyali → mwse.pairs.set(from, peer)
- end/pair sinyali → mwse.pairs.delete(from)
(İstek gönderen taraf pairs haritasına eklendi)
sdk/Peer.js:
- acceptPair() başarısında → mwse.pairs.set(socketId, this)
- rejectPair() → mwse.pairs.delete(socketId)
- endPair() → mwse.pairs.delete(socketId)
(Kabul eden taraf da pairs haritasına eklendi)
public/studio/Studio.js — tamamen yeniden yazıldı:
Gelen eşleme isteği → bildirim banner'ı:
- Yeşil arka plan, socket ID kodu olarak gösterilir
- [Reddet] → rejectPair() → banner kapanır
- [Kabul Et] → acceptPair() → banner kapanır, eşler yenilenir
Eşler kolonu: artık mwse.pairs'tan doğru veriler geliyor
Oda oluşturma: description alanı eklendi (sunucu zorunlu tutuyordu)
Oda oluştur → "Oda adı / Açıklama / Şifre" modal
ID ile ara → prompt() yerine modal
Araç çubuğu: "Kimliğim" kartı, kopyala butonu (⎘→✓ flash)
public/studio/style.css:
.mwse-notif-area / .mwse-notif-bar / __msg / __dot / __actions
go test -race ./... — yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 13:38:17 +03:00
abdussamedulutas
28abefaaa9
Frontend TS→JS ES modülleri + #42 codec altyapısı + versiyon握手
...
SDK (sdk/ dizini — native ES module, bundler yok):
- sdk/version.js : SDK_VERSION="1.0.0", CODEC_JSON/BINARY sabitleri
- sdk/codec.js : WSTSCodec — JSON (şu an), binary stub (#42 altyapısı)
Binary çerçeveleme: opcode(1B)+length(4B)+payload; şimdilik NotImplemented fırlatır
- sdk/EventTarget.js : MWSEEventTarget (browser EventTarget ile çakışma yok)
- sdk/Connection.js : endpoint:"auto" → import.meta.url ile sunucu tespiti
- sdk/WSTSProtocol.js : codec üzerinden encode/decode, sinyal yönlendirme
- sdk/EventPool.js : request()/only() ayrımı (#33 korunuyor)
- sdk/Peer.js : WebRTC stub bağlantısı, WOM pack/to (#33 )
- sdk/Room.js : WOM pack/room (#33 ), createRoom/join/eject
- sdk/PeerInfo.js, RoomInfo.js, IPPressure.js, P2PFileSender.js
- sdk/WebRTC.js : placeholder — ayrıca ele alınacak
- sdk/index.js : MWSE ana sınıfı + versiyon el sıkışması
Versiyon el sıkışması (backend ↔ frontend zorunlu):
- internal/protocol/version.go : WSTSVersion="1.0.0", WSTSCodecJSON=0
- internal/services/yourid.go : bağlantı anında wsts/hello sinyali gönderir
(v + codecs listesi; id sinyalinden ÖNCE gelir)
- sdk/index.js _awaitHello() : scope çalıştırılmadan önce wsts/hello beklenir;
versiyon uyuşmazsa bağlantı kapatılır + 'error' eventi ateşlenir (5s timeout)
Servis (httpserver):
- /sdk.js → 301 /sdk/index.js (import.meta.url doğru çözümlenir)
- /sdk/ → sdk/ dizini file server
- internal/config: MWSE_SDK_DIR env değişkeni (varsayılan ./sdk)
Demo dosyaları: public/demos/{chat,audio,video}.html
go test -race ./... yeşil
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-17 12:24:21 +03:00