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 |
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 |