Help us understand the problem. What is going on with this article?

WebブラウザからgRPCの双方向通信は可能なのか調べた

More than 1 year has passed since last update.

最近WebブラウザからgRPCを呼び出せるようになったようです。
gRPC-Webが正式リリース。WebブラウザからgRPCを直接呼び出し可能に

Unary RPCでの呼び出しはできるようですが、双方向通信は対応してるのか調べてみました。

どうやらgrpc-webというと、2種類あるようで

前者は上記記事で紹介されているもので、後者は名前が同じでやりたいことは同じでも実現方法が異なっているものです。
やりたことはWebブラウザからの双方向通信ができるかなので、どちらも調べてみました。

ちなみにこの2つのプロダクトの違いは下記に記載してあるので、興味がある方は読んでみてください。
https://github.com/improbable-eng/grpc-web/issues/199

自分の解釈により、間違えている可能性もあるのでその場合はご指摘お願いします。

結論

結論から言うと、どちらもgRPCの双方向通信は対応していません。

未対応理由

どちらも同じ理由なのですが、ブラウザネイティブからストリーム通信ができないためです。
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md

Bidi-streaming, with flow-control

・Pending on whatwg fetch/streams to be finalized and implemented in modern browsers
・gRPC-Web client will support the native gRPC protocol with modern browsers

whatwg/streamsというブラウザネイティブのAPIがあるのですが
それがモダンブラウザで実装されない限り双方向通信は出来ないようです。

調査

grpc/grpc-web

このリポジトリでの双方向通信の議論はこちらで行われていました。
https://github.com/grpc/grpc/issues/8682
https://github.com/grpc/grpc-web/issues/24

内容としては上記結論の内容です。
WebSocketで対応する案が出ていたようですが、どうやらやってない様子?

improbable-eng/grpc-web

どうやらWebSocketでは双方向通信をサポートしているようです。
https://github.com/improbable-eng/grpc-web/issues/94

が、純粋な意味でのgRPCでの双方向通信はサポートされていないので、結論としては「対応していない」としました。

fablic
満足度No.1 のフリマアプリ「ラクマ」を運営しています。
https://fril.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした