В настоящее время вы не можете этого сделать. В целом HTTP/2 должен быть прозрачным при использовании для веб-страниц и веб-приложений, поэтому нет необходимости реализовывать низкоуровневые потоки HTTP/2 и детали подключения. Это часть красоты того, как это было реализовано — браузер позаботится обо всем этом, и веб-странице и веб-приложению не нужно знать, использовался ли HTTP/1.1 или HTTP/2.
Возможным исключением из этого является HTTP/2 push, и было предложение выставить HTTP/2 Push программно в рамках Рабочей группы по технологиям веб-гипертекстовых приложений (WHATWG): https://github.com/whatwg/fetch/issues/51. Хотя активность на этом, кажется, полностью упала. Поскольку есть несколько сложностей в реализации API push-уведомлений. В целом передача HTTP/2 сложна, особенно из-за разных реализаций браузеров. и ошибки, поэтому попытка предоставить push-сообщения веб-приложению будет сложной. Также многие считают, что push-уведомления HTTP/2 имеют ограниченное применение, и для большинства случаев использования есть лучшие технологии, такие как подсказки ресурсов (для запроса HTTP-ресурсов) или веб-сокеты (для двусторонней связи). Chrome даже экспериментирует с полным отключением.
Помимо push, приоритизация может быть еще одним вариантом использования для предоставления веб-приложениям подробностей HTTP/2 низкого уровня и, возможно, priority. подсказки в конечном итоге предоставят для этого сопоставление, не привязывая его к HTTP/2 (чтобы его можно было использовать под HTTP/1.1, QUIC или чем-то еще, что появится в будущем).
Итак, ИМХО, я не вижу острой необходимости разрешать создание или управление HTTP/2-соединением из веб-приложения так же, как не существует простого способа (насколько мне известно) создания TCP- или UDP-соединения из JavaScript. Пока это так, я не думаю, что мы увидим много усилий для создания такой реализации. Даже клиент HTTP/2, на который вы ссылаетесь, очень прост и просто делает HTTP-запрос, который браузер уже позволяет вам делать (хотя я ценю, что узел предоставляет больше деталей, если вы хотите перейти на более низкий уровень, чем этот, в то время как браузер не ). По большей части обработка потоков HTTP/2 и другие низкоуровневые детали протокола, вероятно, лучше всего прозрачно обрабатываются самим браузером - как и сейчас.
person
Barry Pollard
schedule
12.09.2018