MWSE/README.md

60 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MWSE — Micro WebSocket Engine
> **Durum: Go yeniden yazımı (0.1.0) başlıyor.** Mevcut Node.js engine `ws.saqut.com`'da canlı; çekirdek, concurrency'i doğru çözmek için Go'ya taşınıyor. Frontend SDK'nın giriş/çıkış sözleşmesi **değişmiyor**.
MWSE, kendisine bağlanan eşleri (peer) birbirleriyle eşleştirip aralarında **düşük gecikmeli veri tünelleri** kuran bir gerçek-zamanlı iletişim motorudur. Sunucu cihazları sanallaştırır; eşler birbirlerinin IP'sini veya cihaz türünü bilmeden, çift yönlü serbestçe haberleşir. Üstünde oda yönetimi, peer pairing, sanal adresleme, dosya transferi ve WebRTC sinyalleşmesi gelir.
## Neden var?
Gerçek-zamanlı uygulama altyapısı bugün ya sadece transport (Socket.io) ya da pahalı SaaS (Twilio/LiveKit). MWSE'nin hedefi: **birkaç satırda** oda + mesaj + sesli/görüntülü görüşme kurabileceğin, kendi sunucunda çalışan açık bir motor.
```js
const mwse = new MWSE({ endpoint: "wss://ws.saqut.com/" });
mwse.scope(async () => {
const room = mwse.room({ name: "lobi", joinType: "free", ifexistsJoin: true });
await room.join();
room.on("message", (peer, data) => console.log(peer.socketId, data));
room.broadcast("herkese merhaba");
});
```
- **~20 satır** → grup mesajlaşma
- **~100 satır** → sesli görüşme
- **~500 satır** → görüntülü görüşme
Tam örnekler için → [Wiki](https://git.saqut.com/saqut/MWSE/wiki/Home).
## Mimari (özet)
```
[Client SDK] ⇄ WSTS protokolü ⇄ [MWSE Engine]
(frontend/) (paket kimliklendirme, (Source/: WebSocket, MessageRouter,
request/response/stream) Services/{Auth, Room, Session,
IPPressure, DataTransfer, YourID})
```
- **WSTS protokolü:** WebSocket üzerine kurulu, giden/gelen paketleri kimliklendiren ve "kimden/kime" yönlendiren request-response-stream katmanı.
- **Sanal adresleme (IPPressure):** uzun socket hash'leri yerine sanal IP / numara / kısa kod (ör. `15.214.11.74`, `884`, `ZQT`) atayıp eşleri kolayca çağırma.
- **Oda sistemi:** `free` / `invite` / `password` / `lock` katılım türleri, per-connection okuma/yazma/bildirim ayarları.
## Yol haritası
| Sürüm | İçerik |
|------|--------|
| **0.1.0** | Go engine çekirdeği + concurrency (goroutine/channel/mutex) + `go test -race` süreç testleri |
| **1.0.0** | Go + Frontend + WebRTC tam parite (oda, pairing, sanal adres, tünel, signaling, demolar) |
| **2.0.0** | WebRTC Studio: tam WebRTC API, çoklu track/kamera, canvas compositing, SRS yayını, sanal IP çakışma + alt-network |
| **2.5.0** | JSON → binary protokol |
| **3.0.0** | Platform: Notify (offline/suit), aktif/pasif sync + datastore, 3. parti sunucu köprüsü |
Detaylı görevler **Issues** ve milestone'larda. Tasarım bağlamı: `todo.md`.
## Güvenlik
MWSE mesajları doğru hedefe ve bozulmadan iletmekten sorumludur. Ancak istemcilerin gönderdiği mesajlar **sokete iletilmeden önce** kullanıcı tarafında manipüle/taklit edilebilir; MWSE bunu **doğrulamaz**. Hassas verileri uygulama katmanında doğrula/şifrele.
## Lisans
Bkz. `LICENSE`.