Поле type: как упакован поток
Это ответ на вопрос «в какой обёртке данные едут до сервера». Самый простой вариант — без обёртки вовсе, и тогда в строке стоит короткое tcp. Бывают обёртки посложнее — тогда там другое слово.
Короткий ответ
Упаковка и защита — разные поля и разные вещи. Их путают чаще всего.
typeотвечает за форму передачи, а не за то, закрыто ли содержимое. За закрытость отвечает соседнее поле.- Значение выбирает сервер. В приложении переключателя упаковки нет, и вводить руками ничего не требуется.
- Значение обязано совпасть. Как и с любым другим параметром: не совпало — подключения нет.
- На скорость это влияет слабо. Разница между современными способами передачи измеряется процентами, а разница между свободной и загруженной серверной точкой — разами.
Почему рядом с tcp часто спрашивают про «none»
Потому что это два соседних поля строки, и их читают как одно словосочетание.
Первое слово говорит про упаковку, второе — про защитный слой. И вот второе как раз важно: если защитного слоя нет, содержимое ничем не закрыто.
Голый вариант в жизни почти не встречается
В рабочих связках защитный слой ставят всегда — иначе передавать нечем закрытое содержимое просто небезопасно.
Если такая строка попала к вам из открытого списка, это ещё один довод её не использовать: что вообще происходит с такими строками.
Зачем бывают обёртки посложнее
Затем, что защитный слой не обязан стоять на самом сервере.
Связку штатно поднимают так: защищённое соединение обрывается раньше, на стороне большой сети доставки содержимого, а дальше до сервера идёт своя дорога.
В такой схеме поток заворачивают в обёртку, которую та сеть понимает и пропускает: обычно это WebSocket — постоянное веб-соединение — или gRPC, способ передачи, принятый у служебных сервисов.
И вот здесь наши сведения кончаются
Мы описали серверный принцип — то, ради чего такую схему поднимают.
Как ведёт себя в ней само приложение, не описано ни у разработчика, ни в открытых источниках.
Поэтому ни советов, ни обещаний по этой части здесь не будет. Придуманный ответ дороже отсутствующего — и в справочнике, и на практике.
А если в моей строке слово, которого здесь нет
Такое возможно: набор способов передачи расширяется, и в строках встречаются новые имена — например xhttp.
Это штатный способ передачи, а не самоделка: у создателей ядра он описан наравне с остальными, отдельной страницей.
Работает он и с обычным защищённым слоем, и с Reality.
Разбирать его здесь мы всё же не станем — по той же причине, по какой не разбираем подробно WebSocket и gRPC.
Серверный принцип известен, а как ведёт себя в такой схеме само приложение, нигде не описано.
Для читателя вывод прежний: незнакомое слово в этом поле — не повод для тревоги. Значение выбрал сервер, и трогать его всё равно нельзя.
Что это значит для вас на практике
| Ситуация | Что делать |
|---|---|
В строке стоит tcp | Ничего. Это самый обычный случай |
| В строке стоит незнакомое слово | Тоже ничего: значение выбрал сервер, и приложение его понимает или нет |
| Подключение не поднимается | Дело не в значении поля, а в строке или сервере целиком |
| Хочется «переключить на другой способ» | Нельзя: сервер ждёт ровно того, на что настроен |
| Кажется, что дело в скорости | Смотреть надо на серверную точку, а не на способ упаковки |
Короткие ответы
Что быстрее — простая упаковка или сложная?
Разница между способами передачи мала и измеряется процентами. Загруженность серверной точки влияет на порядок сильнее.
Где в приложении переключить способ передачи?
Нигде. Переключателя нет: всё, что нужно, лежит внутри строки, и адреса с портами вводить руками тоже не требуется.
Это поле как-то связано с защитой?
Нет, это разные поля. Даже самая хитрая упаковка ничего не закрывает — закрывает защитный слой.
Почему тогда про этот параметр столько спрашивают?
Потому что он стоит в строке первым среди понятных на вид слов, и его принимают за главный. Главный он не больше остальных.
Страница ответила на ваш вопрос?
Спасибо, учтём при следующей правке страницы.