Ne işe yarar (iş diliyle)

Etkinlikte “an”a duyarlı görseller / dashboard’lar için temel altyapı. Bir izleyici formu gönderdiğinde, sahne ekranındaki sayaç anında artar; admin panelinde yeni kelime listelenir. Periyodik refresh ile değil, gerçek-zamanlı push ile — gecikme algılanmaz, “etkinlik anı dramatik etki” oluşur.

Hangi müşteri/projelerde işe yarar

  • Konferans / panel canlı oylama → sahne ekranında bar grafik anında büyür
  • Müzayede / açık artırma teklif akışı
  • Müşteri panik butonu / saha izleme
  • IoT sensör dashboard (sıcaklık, doluluk, basınç)
  • Çağrı merkezi monitör (queue / aktif çağrı sayısı)
  • Spor etkinliği skor / istatistik canlı yayın
  • Açılış / lansman geri sayım + katılım sayacı

Nasıl çalışır (kısa, sade)

Server bir WebSocket endpoint açar (örn. /ws/event/:slug). Client (admin paneli) buraya bağlanır ve “şu etkinliğin akışını dinliyorum” abonesi olur. Yeni bir submission/oylama/ölçüm geldiğinde server o etkinliğin tüm abonelerine küçük bir JSON mesajı yayınlar (type: word_update, ilgili veri). Client mesajı alır, local store’unu günceller, UI rerender olur. Pub/sub map’i memory’de tutulur; multi-instance ölçek için Redis pub/sub’a yükseltilebilir.

Olgunluk

canlida-kanitlanmis. Tek instance Coolify deploy’da sahada çalışıyor. Multi-instance veya yüksek ölçek için Redis pub/sub adapter eklemek küçük bir refactor.

Teknik (geliştiriciler için)

  • Kod: server/src/lib/websocket.ts (subscribe, unsubscribe, subscriberCount — eventId bazlı in-memory pub/sub map’i), server/src/index.ts (Hono WS upgrade), src/lib/use-event-stream.ts (client reconnect logic), src/store/poster-store.ts (applyWordUpdate, applyWordPatch, applyWordDelete reducer’ları).
  • Mesaj formatı: JSON { type, aggregateId, displayWord?, count?, patch? }.
  • Bağımlılık: @hono/node-ws (Node WS adapter).
  • Sınırlar:
    • Coolify Traefik arkasında WS proxy timeout + sticky session konfigüre edilmeli (uzun etkinlikte reconnect fırtınası riski).
    • Auth katmanı yok — public event scope, admin token kontrolü eklenmeli production-kritik yayınlar için.
    • Client reconnect basit (basit retry), exponential backoff yok; ağır ağ ortamında geliştirilebilir.
    • In-memory pub/sub → multi-instance scale için Redis pub/sub bridge gerekir.