Yes envoy proxy is an example of a supported proxy. gRPC on the web browser uses the grpc-web protocol, which is different from the regular grpc protocol. Here's an example of a config that makes envoy perform this translation: https://github.com/grpc/grpc-experiments/blob/master/grpc-zpages/docker/envoy/zprox.sh
On Thu, Sep 20, 2018 at 9:27 AM Greg Keys <[email protected]> wrote: > By proxy do you mean something like Envoy? I'm not opposed to using > something like that, it's basically serves the same purpose of the router > that I'm used to using from crossbar, so I'm able to reason about that > fairly easily. > > I'm also happy to hear the http/2 works with tls, everything we do is tls. > so that should be fine, so long as it will multiplex over a single tcp > connection. the whole reason we're looking to move away from crossbar and > websockets is the scaling issue. > We are currently dependent on the crossbar router which does not cluster > or scale making it a single point of failure for us, but envoy appears to > have scaling working quite nicely. > > I supposed what makes grpc-web so hard to reason about at the moment is > the documentation, it's not very clear, the documentation lays out a simple > Echo, EchoRequest, EchoResponse proto but in the actual code they implement > about 20 other methods, addLeft, addRight etc..... so my mind immediately > goes wtf. > > I guess I'll spend a little more time sorting through the code and try to > come up with something simpler to digest, grpc-web examples are definitely > lacking right now. > > On Wednesday, September 19, 2018 at 6:15:54 PM UTC-7, Carl Mastrangelo > wrote: >> >> There are examples how to run in a browser, but they typically involve a >> sidecar proxy. Here is one example: >> https://github.com/grpc/grpc-experiments/tree/master/grpc-zpages The >> full docs are here: https://github.com/grpc/grpc-web >> >> Browsers present two challenges to gRPC. First, they only use HTTP/2 >> when using TLS or SSL, which a lot of websites don't. Second, Browsers >> don't expose the HTTP trailers that are needed to tell when the response is >> done. To get around these issues, we have gRPC-Web protocol, which >> modifies the gRPC protocol slightly to be usable on HTTP/1.1. The fetch() >> API for Browsers was supposed to fix the latter problem, but it has not >> been implemented by them, so we are kinda stuck with the work around until >> they do. >> >> Lastly, browsers use CORS when making RPCs across origin, which happens >> when you serve your RPCs from a different port than you HTML. This may >> affect you depending on your setup. >> >> >> I guess all of this is to say that getting requests (or RPCs) to work in >> the browser is much more complicated that it first appears, and >> unfortunately we can't fix it for you. The proxy solution, while more >> complex, does solve a number of things you would have to otherwise do. >> >> >> >> >> >> On Wednesday, September 19, 2018 at 4:26:57 PM UTC-7, Greg Keys wrote: >>> >>> I was thrilled when I started looking at gRPC as an alternative to our >>> current implementation of websockets (crossbar.io) however that >>> enthusiasm is dwindling the more I look into it. >>> >>> Am I understanding this correctly that it's primary strength is server >>> side service to service communication? >>> >>> My hope was to use it in the browser as well as service to service. But >>> from what I gather the browser implementation is still using http/1.1 and >>> it does not multiplex as a result and instead uses xhr >>> >>> I have not been able to find any good (simple) examples of gRPC in the >>> browser, I've found a couple but they are really complex to reason about, >>> compared to the server side examples which are >>> typically really simple. >>> >>> Are there any good examples of gRPC in the browser? are there any >>> implementations in the browser that multiplex? >>> >> -- > You received this message because you are subscribed to the Google Groups " > grpc.io" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/grpc-io. > To view this discussion on the web visit > https://groups.google.com/d/msgid/grpc-io/e31b7f17-70e8-4a53-bec4-055eca05c9d9%40googlegroups.com > <https://groups.google.com/d/msgid/grpc-io/e31b7f17-70e8-4a53-bec4-055eca05c9d9%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Spencer Fang -- You received this message because you are subscribed to the Google Groups "grpc.io" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/grpc-io. To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/CAK%3D-x_5oEJdKvYaT3F4U48jsi%3DP5SuO8DxW7nws1vkoH-Gnw3A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
