Przejdź do głównej zawartości

Serwer wieloosobowy

Przekaźnik wieloosobowy En Parlant~ to lekki serwer WebSocket napisany w Rust z użyciem Axum i socketioxide. Łączy dwóch graczy w celu prowadzenia partii szachowych w czasie rzeczywistym przez Socket.IO, bez trwałego przechowywania danych i przy minimalnych wymaganiach zasobowych.

Kod źródłowy serwera przekaźnikowego znajduje się w repozytorium en-parlant-relay.

Domyślny serwer przekaźnikowy działa od razu po instalacji, ale istnieją dobre powody, aby uruchomić własny:

  • Prywatność — cały ruch związany z grami pozostaje na Twojej infrastrukturze
  • Niższe opóźnienia — wdrożenie bliżej graczy zapewnia szybszą transmisję ruchów
  • Niezależność — brak zależności od dostępności i czasu działania domyślnego przekaźnika

Repozytorium przekaźnika zawiera plik konfiguracyjny fly.toml, co sprawia, że Fly.io jest najłatwiejszą ścieżką wdrożenia. Darmowy plan Fly.io jest wystarczający do użytku osobistego.

  1. Zainstaluj Fly CLI:

    Okno terminala
    curl -L https://fly.io/install.sh | sh
  2. Zarejestruj się lub zaloguj:

    Okno terminala
    fly auth signup
    # or
    fly auth login
  3. Sklonuj repozytorium przekaźnika i wdróż:

    Okno terminala
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    fly launch
    fly deploy

Fly.io zbuduje plik binarny Rust, wdroży go i udostępni publiczny adres URL w postaci your-app-name.fly.dev.

Zbuduj przekaźnik ze źródeł i uruchom go na dowolnej maszynie z zestawem narzędzi Rust.

  1. Sklonuj i zbuduj:

    Okno terminala
    git clone https://github.com/DarrellThomas/en-parlant-relay.git
    cd en-parlant-relay
    cargo build --release
  2. Uruchom serwer:

    Okno terminala
    ./target/release/en-parlant-relay

    Serwer domyślnie nasłuchuje na porcie 3210.

  3. Do użytku produkcyjnego uruchom serwer za odwrotnym proxy (nginx, Caddy lub podobnym), aby obsługiwać terminację TLS. Sam przekaźnik komunikuje się zwykłym protokołem WebSocket — Twoje proxy dodaje warstwę szyfrowania wss://.

Serwer jest bardzo lekki. Przechowuje pokoje gier w pamięci, przekazuje ruchy między dwoma graczami i nie robi nic więcej. Mały VPS, a nawet Raspberry Pi z łatwością sobie z nim poradzi.

Gdy Twój przekaźnik jest uruchomiony, skieruj na niego En Parlant~:

  1. Otwórz Ustawienia w En Parlant~
  2. Znajdź ustawienie adresu URL serwera przekaźnikowego dla gry wieloosobowej
  3. Wprowadź punkt końcowy WebSocket Twojego serwera:
    • Dla Fly.io: wss://your-app-name.fly.dev
    • Dla własnego hostingu z proxy TLS: wss://relay.yourdomain.com
    • Dla lokalnego środowiska deweloperskiego: ws://localhost:3210

To wszystko. Aplikacja będzie używać Twojego przekaźnika do wszystkich gier wieloosobowych.

Kilka rzeczy, które warto wiedzieć o działaniu przekaźnika:

  • Kody pokojów — Serwer generuje 6-znakowe kody gier przy użyciu jednoznacznego zestawu znaków. Znaki, które wyglądają podobnie, są wykluczane (brak 0/O, brak 1/I/L), aby uniknąć pomyłek przy ustnym przekazywaniu kodów.

  • Czyszczenie pokojów — Pokoje są automatycznie usuwane po 30 minutach bezczynności. Zadanie czyszczenia uruchamia się co 60 sekund, aby usuwać nieaktywne pokoje.

  • Brak trwałego przechowywania — Cały stan jest przechowywany w pamięci. Jeśli serwer zostanie zrestartowany, aktywne pokoje zostaną utracone. Jest to celowe — przekaźnik jest bezstanowy i trywialnie wymienialny.

  • Minimalne zasoby — Serwer zużywa bardzo mało CPU i pamięci. Jedynie odbiera zdarzenia Socket.IO od jednego gracza i przekazuje je drugiemu. Nie ma logiki gry, walidacji ruchów ani bazy danych.