Parolla kelime oyunu için gerçek zamanlı WebSocket sunucusu. Bu sunucu, oyuncular arasındaki etkileşimi ve oyun mantığını yönetir.
- Gerçek zamanlı soru-cevap sistemi
- Çoklu oyuncu desteği
- JWT tabanlı kimlik doğrulama
- Oyuncu can ve puan sistemi
- Otomatik soru döngüsü
- Zaman bazlı oyun mantığı
- Node.js >= 18.0.0
- npm veya yarn
- PM2 (production için)
- Docker (opsiyonel)
- Repoyu klonlayın:
git clone https://github.com/radkod/parolla-ws.git
cd parolla-ws
- Bağımlılıkları yükleyin:
npm install
# veya
yarn install
- Örnek env dosyasını kopyalayın:
cp .env-example .env
.env
dosyasını düzenleyin:
PORT=1881
HOST=localhost
API_URL=http://parolla-backend.test/api/v1
JWT_SECRET=your_jwt_secret_key_here
- Docker imajını oluşturun:
docker build -t parolla-ws .
- Docker container'ı çalıştırın:
docker run -d \
--name parolla-ws \
-p 1881:1881 \
-e PORT=1881 \
-e HOST=0.0.0.0 \
-e API_URL=http://parolla-backend.test/api/v1 \
-e JWT_SECRET=your_jwt_secret_key_here \
parolla-ws
Docker Compose ile çalıştırmak için:
docker-compose up -d
Geliştirme sunucusunu başlatmak için:
npm run dev
# veya
yarn dev
Production ortamında çalıştırmak için:
npm start
# veya
yarn start
PM2 ile çalıştırmak için:
pm2 start src/server.js --name "parolla-ws"
Production ortamında Docker ile çalıştırmak için:
# Docker container'ı başlat
docker start parolla-ws
# Container loglarını görüntüle
docker logs -f parolla-ws
# Container'ı durdur
docker stop parolla-ws
# Container'ı yeniden başlat
docker restart parolla-ws
WebSocket sunucusuna bağlanmak için:
const ws = new WebSocket('ws://localhost:1881?token=your_jwt_token');
CONNECTED
: Oyuncunun oyuna başarıyla bağlandığını bildirirERROR
: Bir hata oluştuğunu bildirirSYSTEM_MESSAGE
: Sistem mesajlarını bildirir (hoş geldin, duyurular vb.)PLAYER_JOINED
: Yeni bir oyuncunun oyuna katıldığını bildirirPLAYER_LEFT
: Bir oyuncunun oyundan ayrıldığını bildirirVIEWER_COUNT_UPDATE
: İzleyici sayısı güncellemesini bildirir
QUESTION
: Yeni soru gönderirTIME_UPDATE
: Kalan süreyi bildirir (her saniye gönderilir)TIME_UP
: Sürenin dolduğunu ve doğru cevabın gösterileceğini bildirirWAITING_NEXT
: Sonraki soruya geçiş süresini bildirirGAME_RESTART
: Tüm soruların tamamlandığını ve oyunun yeniden başlayacağını bildirir
ANSWER
: Oyuncunun soruya cevabını gönderir (istemciden sunucuya)ANSWER_RESULT
: Cevap sonucunu bildirir (doğru/yanlış)GAME_OVER
: Oyuncunun canlarının bittiğini ve oyun dışı kaldığını bildirirCHAT_MESSAGE
: Kullanıcının chat mesajı gönderdiğini bildirirCHAT_HISTORY
: Tüm chat mesajlarını bildirir
SCORE_UPDATE
: Oyuncunun puan durumunu bildirirROUND_SCORES
: Tur sonunda puan tablosunu bildirirGAME_SCORES
: Oyun sonunda genel puan tablosunu bildirirRECENT_ANSWERS
: Son verilen cevapları bildirirUSER_LIST
: Oyundaki kullanıcı listesini bildirirPLAYER_LIST_UPDATE
: Oyuncu listesi güncellemesini bildirir
- Her oyuncu 3 can ile başlar
- Yanlış cevaplarda can kaybedilir
- Doğru cevap 10 puan kazandırır
- Her soru için 30 saniye süre verilir
- Sorular arası 5 saniye bekleme süresi vardır
Hata loglarını görüntülemek için:
# PM2 logları
pm2 logs parolla-ws
# Uygulama logları
tail -f logs/app.log
# Container logları
docker logs -f parolla-ws
# Container durumu
docker ps -a | grep parolla-ws
# Container detayları
docker inspect parolla-ws
- Fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature
) - Değişikliklerinizi commit edin (
git commit -m 'feat: Add amazing feature'
) - Branch'inizi push edin (
git push origin feature/amazing-feature
) - Pull Request oluşturun
Bu proje MIT lisansı ile lisanslanmıştır.
Radkod Yazılım - [email protected]