📡 WebSocket Mimarisi (7 Bağlantı)

4 internal FVT WS + 3 external (Binance + Matriks rt/dl)

🌐 7 WebSocket Bağlantı

📥 Internal (NEXT_PUBLIC_*) — 4 adet

ENV VarURL PatternAmaç
NEXT_PUBLIC_WS_URLwss://fvt.com.tr/...Genel (notification, domain events)
NEXT_PUBLIC_CHAT_WS_URL + PATHwss://fvt.com.tr/chatCanlı yayın sohbeti
NEXT_PUBLIC_GUESS_WS_URL + PATHwss://fvt.com.tr/guesst-Chat 115 fon T+1 tahmin
NEXT_PUBLIC_STOCK_WS_URLwss://fvt.com.tr/stockBIST hisse + endeks real-time

🌍 External — 3 adet

WSURLProvider
Binancewss://stream.binance.com:9443/stream?streams=...Kripto (direct)
Matriks RTwss://rt.radix.matriksdata.com:443/marketBIST real-time (PRO, JWT RS256 30dk)
Matriks DLwss://dl.radix.matriksdata.com:443/marketBIST delayed (anonim)

⚡ WebSocket Events

Connection Lifecycle (Standard)

connect, disconnect, connect_error
reconnect_attempt, message, error, close
data, drain, end, finish, abort, aborted
hata  // Türkçe!

FVT Generic Events

EventPayloadUse Case
subscribe{ symbols: [...] }Sembol takibi başlat
unsubscribe{ symbols: [...] }Takibi durdur
snapshot{ symbols, prices }İlk yükleme
data_update{ symbol, price, change }Real-time tick
kap_update{ hisseKodu, aciklama }KAP haber
nextday_update{ fonKodu, tahmin }Fon T+1 NAV

🔥 CQRS Domain Events (4)

EventTetikleyiciSubscribed By
dividend:changedTemettü dağıtım günüWallet, Portföy, Bildirim
portfolio:changedPozisyon değişti (trade veya fiyat)Portföy, Sidebar, Cüzdan
target:changedHedef dağılım veya rebalancePortföy Analiz, Rebalance UI
trade:changedYeni al/sat işlemiİşlem geçmişi, Wallet, Analyze

Matriks Raw Protocol

packet, packetreceive, packetsend, binder

🔄 WebSocket Akış Diyagramı

[Sayfa açılır] │ ▼ [Tab Leader Election (BroadcastChannel)] │ ├─ Bu tab LEADER mı? │ │ │ ▼ │ [WS connect] │ │ │ ▼ │ emit('subscribe', { symbols: ['THYAO', 'AAPL', 'BTCUSDT'] }) │ │ │ ▼ │ on('snapshot') → ilk fiyatlar │ │ │ ▼ │ on('data_update') → her tick │ │ │ ▼ │ [BroadcastChannel post] → diğer tab'lar │ └─ NOT leader → BroadcastChannel listener │ ▼ Tüm tab'larda eş zamanlı update

🔐 Matriks JWT Detay

Header: { "alg": "RS256", "typ": "JWT" }
Payload: {
  "iss": "YEFLABSDLYD",                ← YEF Labs Delayed
  "exp": 1779672524,                    ← 30dk sonra
  "iat": 1779654524,
  "nbf": 1779654494,
  "id": "639152621241139854",
  "sub": "YFL-FVT_GUEST_ANON",          ← Anonim
  "cli": "W"
}

PRO için:

🔌 Binance WS Pattern

Single stream:
  wss://stream.binance.com:9443/ws/btcusdt@trade
  wss://stream.binance.com:9443/ws/btcusdt@kline_1m

Multi stream (FVT muhtemelen):
  wss://stream.binance.com:9443/stream?streams=btcusdt@trade/ethusdt@trade

Response:
  { stream: "btcusdt@trade", data: { p: "76733.76", q: "0.001", ... } }

🎯 Sayfa Bazlı WS Subscriptions

SayfaWS Connections
/hisseler/yerli/THYAOStock WS (subscribe THYAO)
/portfoy/{id}Stock WS (subscribe all positions) + User WS (domain events)
/canli-yayinChat WS (sohbet) + Q&A
/t-chatGuess WS (115 fon predictions)
/akisSocial WS (post:new, trend update)
/kripto/BTCBinance WS direct (btcusdt@trade)
/terminalStock WS + Matriks RT (PRO) — multi widget

⚡ Multi-Tab Optimization

📡 Tab Leader Pattern
Tek tab WS dinler, diğer tab'lar BroadcastChannel('fvt-ws-events') üzerinden veri alır.
Bu sayede 10 tab açıksa bile 1 WS connection.

📊 PostHog Multi-Window Dedup

sessionStorage: ph_phc_..._primary_window_exists  ← TRUE/FALSE

Sadece 1 tab session recording yapıyor → bandwidth tasarrufu