Запустить туннель бесплатно
☰
Что нового

Время ответа по частям, автозакрытие по трафику и честные ошибки

новоеулучшеноисправленоклиентсервер

DevTools показывает, где теряется время: на сервере, в туннеле или в приложении. Автозакрытие смотрит на трафик, а консольный клиент не молчит об ошибках.

Страница тормозит, а виноват туннель или ваш код? Теперь это видно в браузере. Заодно мы прошлись по консольному клиенту и исправили места, где он зависал, молчал об ошибке или делал не то, что просили.

Новое

  • У ответов через HTTP-туннель появился заголовок Server-Timing. В DevTools, на вкладке Network → Timing, время делится на три части: fxt-edge (сервер fxTunnel), fxt-tunnel (путь до вашей машины) и fxt-app (ваше приложение, оценка). Если туннель измерить не удалось, он показан вместе с приложением в строке fxt-upstream. Для своих доменов заголовок не добавляется.

Улучшено

  • fxtunnel up сообщает, если фоновый режим не запустился, и показывает журнал из ~/.fxtunnel/daemon.log. Когда фоновый режим уже работает, fxtunnel http 3000 добавляет к нему туннель и печатает его адрес. Если сервер отказал, команда называет причину и завершается с кодом 1. Добавленные так туннели возвращаются после переподключения. Подробнее о фоновом режиме в статье про fxtunnel up.
  • Флаги важнее переменных окружения, те важнее файла конфигурации, а файл важнее сохранённого входа. Раньше сохранённый вход перебивал сервер и токен из fxtunnel.yaml. Сохранённый токен уходит только на тот сервер, для которого его сохранили. Для своего сервера без авторизации fxtunnel login больше не нужен.
  • Ошибки стали понятнее. Вместо всей справки клиент печатает саму ошибку. Неверный --log-level отклоняется сразу, а не превращается молча в info. Команды domains ждут ответа сервера не дольше 30 секунд. --remote-port проверяется до подключения: подходят 0 (выбрать автоматически) и 1–65535.

Исправлено

  • --auto-close считал простаивающим туннель, где шло одно долгое TCP-соединение, и любой UDP-туннель, а с инспектором мог закрыть туннель посреди длинного ответа. Теперь туннель живёт, пока по нему идут данные в любую сторону. Временные туннели разбираем в статье про --auto-close и --max-lifetime.
  • В UDP-туннеле с несколькими отправителями ответы уходили тому, кто написал последним. Теперь каждый получает свои, так что на игровой сервер могут зайти несколько игроков сразу.
  • Если сервер отказывал в туннеле, клиент ждал 30 секунд и писал, что всё запущено. Теперь ошибка видна сразу. Отклонённый токен клиент больше не пробует бесконечно: он останавливается и просит войти заново. Туннели, закрытые по --auto-close или --max-lifetime, после переподключения не возвращаются.
  • fxtunnel http 3000 и другие быстрые команды читают только файл из -c или ./fxtunnel.yaml. Посторонний client.yaml в папке или сломанная запись о другом туннеле им больше не мешают.
  • fxtunnel init в режиме добавления сохраняет остальные разделы и комментарии файла, а не переписывает его целиком. fxtunnel domains custom add --help больше не падает. У --target теперь нет короткой формы: -t означает --token.

Обновить клиент: fxtunnel update

@mephistofx

Пишу fxTunnel — туннели для разработчиков без белого IP. Рассказываю, как это устроено изнутри.

Написать в Telegram →