player/src/api/API.js
min ccf76d539b feat(player): графика/эффекты (фича-парность со студией) + realtime на game.rublox.pro
GraphicsManager (постобработка/материалы/API game.graphics) — паритет со студией,
применяется при загрузке игры если автор настроил. Новые материалы chrome/water/
iridescent. Realtime-эндпоинт переведён на game.rublox.pro (S1 NPM прямо, без
hop через S2 — чинит разрывы WebSocket). MultiplayerSync улучшен.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-10 01:29:00 +03:00

47 lines
2.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// API-эндпоинты плеера Рублокса.
//
// Все URL бэкенда настраиваются через Vite environment variables:
// VITE_API_BASE — базовый URL HTTP-API (дефолт: '' для localhost+vite-proxy)
// VITE_REALTIME_HTTP — Colyseus matchmaking HTTP-эндпоинт
// VITE_REALTIME_WS — Colyseus WebSocket-эндпоинт
// VITE_RUBLOX_HOME — главный сайт Рублокса (редирект если нет JWT)
//
// См. .env.example с готовыми дефолтами на публичный staging
// (https://dev-api.rublox.pro).
//
// В dev (vite на localhost) BASE пустой и запросы идут на относительные
// /api-* пути, которые vite.config.js проксирует на staging/prod.
const ENV = (typeof import.meta !== 'undefined' && import.meta.env) || {};
const IS_DEV = typeof window !== 'undefined'
&& (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1');
// Пустой BASE в dev → vite-proxy роутит сам.
// В prod → либо env-настроенный бэкенд, либо текущий origin.
const BASE = ENV.VITE_API_BASE
?? (IS_DEV ? '' : (typeof window !== 'undefined' ? window.location.origin : ''));
export const USER_addres = BASE + '/api-user';
export const STORYS_addres = BASE + '/api-storys';
// Эндпоинты realtime (Colyseus). По умолчанию используем HTTPS-relative
// для HTTPS-страницы (vite-proxy обрабатывает /api-game), иначе берём
// env-настроенные прямые URL.
const IS_HTTPS = typeof window !== 'undefined' && window.location.protocol === 'https:';
// 2026-06-05: realtime теперь прямо на game.rublox.pro (S1 NPM → S1 VM 110),
// не через minecraftia-school.ru/api-game (лишний hop S2 NPM → S1 NAT
// давал разрывы WebSocket каждую секунду).
export const REALTIME_HTTP = ENV.VITE_REALTIME_HTTP
?? (IS_HTTPS ? 'https://game.rublox.pro' : 'http://localhost:8685');
export const REALTIME_WS = ENV.VITE_REALTIME_WS
?? (IS_HTTPS ? 'wss://game.rublox.pro' : 'ws://localhost:8685');
// Главный сайт Рублокса — куда редиректить юзеров без ticket/JWT.
export const RUBLOX_HOME = ENV.VITE_RUBLOX_HOME ?? 'https://rublox.pro/app';
// Папки ассетов для фото профиля и скинов (раздают user/storys-микросервисы).
export const FOLDER_PROFILE = USER_addres + '/assets/profile/';
export const FOLDER_STORYS = STORYS_addres + '/assets/skin/';