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.
Dlaczego warto hostować samodzielnie
Dział zatytułowany „Dlaczego warto hostować samodzielnie”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
Opcje wdrożenia
Dział zatytułowany „Opcje wdrożenia”Fly.io (zalecane)
Dział zatytułowany „Fly.io (zalecane)”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.
-
Zainstaluj Fly CLI:
Okno terminala curl -L https://fly.io/install.sh | sh -
Zarejestruj się lub zaloguj:
Okno terminala fly auth signup# orfly auth login -
Sklonuj repozytorium przekaźnika i wdróż:
Okno terminala git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relayfly launchfly deploy
Fly.io zbuduje plik binarny Rust, wdroży go i udostępni publiczny adres URL w postaci your-app-name.fly.dev.
Hosting własny
Dział zatytułowany „Hosting własny”Zbuduj przekaźnik ze źródeł i uruchom go na dowolnej maszynie z zestawem narzędzi Rust.
-
Sklonuj i zbuduj:
Okno terminala git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relaycargo build --release -
Uruchom serwer:
Okno terminala ./target/release/en-parlant-relaySerwer domyślnie nasłuchuje na porcie 3210.
-
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.
Konfiguracja En Parlant~
Dział zatytułowany „Konfiguracja En Parlant~”Gdy Twój przekaźnik jest uruchomiony, skieruj na niego En Parlant~:
- Otwórz Ustawienia w En Parlant~
- Znajdź ustawienie adresu URL serwera przekaźnikowego dla gry wieloosobowej
- 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
- Dla Fly.io:
To wszystko. Aplikacja będzie używać Twojego przekaźnika do wszystkich gier wieloosobowych.
Szczegóły serwera
Dział zatytułowany „Szczegóły serwera”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, brak1/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.