Серверы для шматкарыстальніцкай гульні
Шматкарыстальніцкі рэлей En Parlant~ — гэта лёгкі WebSocket-сервер, напісаны на Rust з выкарыстаннем Axum і socketioxide. Ён злучае двух гульцоў для гульні ў шахматы ў рэальным часе праз Socket.IO, без пастаяннага сховішча і з мінімальнымі патрабаваннямі да рэсурсаў.
Зыходны код рэлейнага сервера знаходзіцца ў рэпазіторыі en-parlant-relay.
Навошта разгортваць уласны сервер
Section titled “Навошта разгортваць уласны сервер”Стандартны рэлейны сервер працуе адразу пасля ўсталявання, але ёсць важкія прычыны запусціць уласны:
- Прыватнасць — увесь гульнявы трафік застаецца на вашай інфраструктуры
- Меншая затрымка — разгарніце сервер бліжэй да вашых гульцоў для хутчэйшай перадачы хадоў
- Незалежнасць — ніякай залежнасці ад даступнасці і працаздольнасці стандартнага рэлея
Варыянты разгортвання
Section titled “Варыянты разгортвання”Fly.io (Рэкамендуецца)
Section titled “Fly.io (Рэкамендуецца)”Рэпазіторый рэлея змяшчае канфігурацыйны файл fly.toml, што робіць Fly.io найпрасцейшым шляхам для разгортвання. Бясплатны тарыф Fly.io падыходзіць для асабістага выкарыстання.
-
Усталюйце Fly CLI:
Terminal window curl -L https://fly.io/install.sh | sh -
Зарэгіструйцеся або ўвайдзіце:
Terminal window fly auth signup# orfly auth login -
Кланіруйце рэлей і разгарніце:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relayfly launchfly deploy
Fly.io збярэ бінарны файл Rust, разгорне яго і дасць вам публічны URL накшталт your-app-name.fly.dev.
Уласны сервер
Section titled “Уласны сервер”Збярыце рэлей з зыходнага коду і запусціце яго на любой машыне з набором інструментаў Rust.
-
Кланіруйце і збярыце:
Terminal window git clone https://github.com/DarrellThomas/en-parlant-relay.gitcd en-parlant-relaycargo build --release -
Запусціце сервер:
Terminal window ./target/release/en-parlant-relayПа змаўчанні сервер слухае порт 3210.
-
Для прадакшн-выкарыстання запускайце сервер за зваротным проксі (nginx, Caddy або аналагічным) для апрацоўкі TLS-тэрмінацыі. Сам рэлей працуе з простым WebSocket — ваш проксі дадае ўзровень шыфравання
wss://.
Сервер вельмі лёгкі. Ён захоўвае гульнявыя пакоі ў памяці, перанакіроўвае хады паміж двума гульцамі і больш нічога не робіць. Невялікі VPS або нават Raspberry Pi лёгка справіцца з гэтай задачай.
Налада En Parlant~
Section titled “Налада En Parlant~”Калі ваш рэлей запушчаны, накіруйце En Parlant~ на яго:
- Адкрыйце Налады ў En Parlant~
- Знайдзіце наладу URL рэлейнага сервера для шматкарыстальніцкай гульні
- Увядзіце WebSocket-канчатковую кропку вашага сервера:
- Для Fly.io:
wss://your-app-name.fly.dev - Для ўласнага сервера з TLS-проксі:
wss://relay.yourdomain.com - Для лакальнай распрацоўкі:
ws://localhost:3210
- Для Fly.io:
Вось і ўсё. Праграма будзе выкарыстоўваць ваш рэлей для ўсіх шматкарыстальніцкіх гульняў.
Падрабязнасці пра сервер
Section titled “Падрабязнасці пра сервер”Некалькі рэчаў, якія варта ведаць пра працу рэлея:
-
Коды пакояў — Сервер генеруе 6-сімвальныя гульнявыя коды з выкарыстаннем набору адназначных сімвалаў. Сімвалы, якія выглядаюць падобна, выключаны (няма
0/O, няма1/I/L), каб пазбегнуць блытаніны пры вусным абмене кодамі. -
Ачыстка пакояў — Пакоі аўтаматычна выдаляюцца пасля 30 хвілін бяздзейнасці. Задача ачысткі запускаецца кожныя 60 секунд для выдалення неактыўных пакояў.
-
Без пастаяннага сховішча — Увесь стан захоўваецца ў памяці. Калі сервер перазапусціцца, актыўныя пакоі будуць страчаны. Гэта зроблена наўмысна — рэлей не мае стану і лёгка замяняецца.
-
Мінімальныя рэсурсы — Сервер выкарыстоўвае вельмі мала працэсарнага часу і памяці. Ён толькі прымае падзеі Socket.IO ад аднаго гульца і перанакіроўвае іх іншаму. Ніякай гульнявой логікі, ніякай валідацыі хадоў, ніякай базы даных.