Перейти к основному содержанию
Начиная с Robust Toolbox версии 271.1.0 движок поддерживает режим высокоскоростной передачи данных («high bandwidth») с использованием WebSocket. Это позволяет таким функциям, как загрузка/скачивание ресурсов администратором, иметь более высокую пропускную способность, чем поддерживает обычный сетевой уровень игры, но требует дополнительной настройки сервера. Контент может реализовывать дополнительные функции через интерфейс ITransferManager. В отличие от обычного игрового трафика, Robust не реализует уровень шифрования для данных WebSocket. Поэтому рекомендуется размещать HTTP API статуса игры за обратным прокси, который предоставляет TLS, иначе трафик будет незащищённым. Мы предполагаем, что вы знаете, как настроить ваш веб-сервер с SSL, или, по крайней мере, знаете, что делать, если вы не хотите шифровать данные.

Конфигурация игрового сервера

Основные CVars находятся здесь (Обратите внимание: это перманентная ссылка, к моменту написания этой страницы могло появиться больше CVars). Главная переменная, о которой стоит беспокоиться — transfer.http_endpoint, она должна указывать на HTTP API сервера (тот самый, с /status и /info, если вы когда-либо к нему обращались). В большинстве случаев это будет то же значение, что и hub.server_url, но с заменой ss14:// на http:// и ss14s:// на https://, и добавлением номера порта (по умолчанию :1212).
Вы можете установить эти параметры напрямую на работающем сервере, отредактировав CVars с помощью команды sudo cvar.Обратите внимание, что только игроки, подключающиеся после включения системы http-передачи, будут использовать высокоскоростные системы, в то время как уже подключённые игроки останутся на запасном варианте lidgren до переподключения.Очевидно, чтобы изменения сохранялись, вам также нужно будет установить их в вашей конфигурации.
Пример из Wizard’s Den Vulture:
[transfer]
http = true
http_endpoint = "https://leviathan.spacestation14.com/vulture"
Если вы не хотите использовать шифрование или хотите использовать IP, ваша конфигурация может выглядеть так:
[transfer]
http = true
http_endpoint = "http://203.0.113.125:1212"
Если вы не используете обратный прокси… это должно просто работать! Попробуйте (пере)подключиться и проверьте, успешно ли вы подключаетесь!

Конфигурация обратного прокси

Большинство веб-серверов поддерживают перезагрузку конфигурации без необходимости полного перезапуска. Вам стоит делать это особенно после настройки websocket, так как закрытие соединения отключит всех игроков. И перезапуск веб-сервера приведёт к закрытию всех соединений.Поэтому вместо systemctl restart nginx используйте systemctl reload nginx (или то, что используется для вашего веб-сервера).Если вы используете что-то нестандартное, найдите, как перезагрузить его конфигурацию на месте.

Пример для Nginx

WebSocket’ы в nginx требуют передачи заголовков Upgrade и Connection, мы следуем примеру конфигурации nginx для WebSocket согласно их документации.
http {
    map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
}

server {
    ...

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto https;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection $connection_upgrade;
        proxy_pass http://localhost:1212/;
    }
}

Пример для Caddy

Caddy должен автоматически передавать правильные заголовки, просто используя обычную директиву reverse_proxy. Однако будьте осторожны: перезагрузка конфигурации закроет активные WebSocket-соединения по умолчанию (я не уверен, почему это поведение по умолчанию), что приведёт к отключению ваших игроков от сервера, поэтому мы рекомендуем установить stream_timeout и stream_close_delay.
example.com {
    reverse_proxy localhost:1215 {
            # Да, технически это означает, что если игрок останется на сервере
            # в течение 12 часов в одной сессии, он будет отключён.
            # Но, честно говоря... им стоит выйти на улицу и потрогать траву.
            stream_timeout 12h
            stream_close_delay 12h
    }
}
Последнее изменение 21 июня 2026 г.