Почему браузеры не поддерживают gRPC? - PullRequest
0 голосов
/ 07 сентября 2018

gRPC основан на HTTP / 2, который (предположение) широко поддерживается браузерами. Поэтому я считаю, что не должно быть проблем с gRPC из браузера.

Однако ясно, что проблема есть. Протокол grpc web отличается, так как существует "из-за ограничений браузера". Есть также многочисленные сообщения в блоге, описывающие сложные технические стеки, развернутые, чтобы заставить gRPC работать из браузера.

Мне не хватает самой проблемы - почему gRPC не просто работает из браузеров?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Теперь я понимаю, что браузеры поддерживают только HTTP / 2 в том смысле, что они используют его для получения ресурсов с сервера от имени кода вашего приложения (javascript).

Код приложения Javascipt по-прежнему может использовать только HTTP / 1 (который может обрабатываться браузером при подключении HTTP / 2).Поэтому код приложения не может использовать grpc.

Если кто-нибудь найдет, где это объясняется в документации, было бы хорошо добавить ссылку на него здесь.

0 голосов
/ 26 сентября 2018

Большинство браузеров используют HTTP1.1, тогда как GRPC работает только с HTTP2. Вы можете использовать nginx, envoy или traefic, чтобы запустить его за обратным прокси, очень похоже на то, как веб-сокеты часто используются за обратным прокси (в этом случае http1 обновляется до подключения через веб-сокеты). Обратный прокси-сервер отправит запрос grpc, отправленный через http1, на бэкэнд http2 и наоборот. Вы можете использовать Envoy (предлагается / в настоящее время используется grpc-web), traefik (я использую это лично) и nginx.

...