diff --git a/.cspell.json b/.cspell.json index eb1cb0a..4feee7a 100644 --- a/.cspell.json +++ b/.cspell.json @@ -5,6 +5,7 @@ "words": [ "CNCF", "flatbuffers", + "Gmail", "performant", "printf", "protoc", diff --git a/content/blog/state-of-grpc-web.md b/content/blog/state-of-grpc-web.md index 97a72b9..f66ed05 100644 --- a/content/blog/state-of-grpc-web.md +++ b/content/blog/state-of-grpc-web.md @@ -1,6 +1,7 @@ --- title: The state of gRPC in the browser date: 2019-01-08 +spelling: cSpell:ignore Brandhorst envoyproxy Fibyl grpcweb grpcwebproxy grpcwebtext Johan npmjs restjson roadmap author: name: Johan Brandhorst link: https://jbrandhorst.com @@ -62,8 +63,8 @@ requests and responses to something the browser can use. The teams at Google and Improbable both went on to implement the spec in two different repositories[5](#f5),[6](#f6), -and with slightly different implementations, such that neither was entirely -conformant to the spec, and for a long time neither was compatible with the +and with slightly different implementations, such that neither entirely +conformed to the spec, and for a long time neither was compatible with the other's proxy[7](#f7),[8](#f8). The Improbable gRPC-Web client[9](#f9) is implemented in @@ -121,7 +122,7 @@ either client with either proxy. # The Future The Google implementation announced version 1.0 and general availability in -October 2018[21](#f21) and has published a roadmap of future +October 2018[21](#f21) and has published a road map of future goals[22](#f22), including: - An efficient JSON-like message encoding @@ -168,29 +169,29 @@ browser, and marks an exciting time for frontend developers! ## References -1.
https://improbable.io/games/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis [↩](#a1) -2.
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md [↩](#a2) -3.
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md [↩](#a3) -4.
https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md#protocol-differences-vs-grpc-over-http2 [↩](#a4) -5.
https://github.com/improbable-eng/grpc-web [↩](#a5) -6.
https://github.com/grpc/grpc-web [↩](#a6) -7.
https://github.com/improbable-eng/grpc-web/issues/162 [↩](#a7) -8.
https://github.com/grpc/grpc-web/issues/91 [↩](#a8) -9.
https://github.com/improbable-eng/grpc-web/tree/master/ts [↩](#a9) -10.
https://www.npmjs.com/package/@improbable-eng/grpc-web [↩](#a10) -11.
https://github.com/improbable-eng/grpc-web/tree/master/go/grpcweb [↩](#a11) -12.
https://github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy [↩](#a12) -13.
https://github.com/grpc/grpc-web/tree/master/javascript/net/grpc/web [↩](#a13) -14.
https://developers.google.com/closure/ [↩](#a14) -15.
https://www.npmjs.com/package/grpc-web [↩](#a15) -16.
https://github.com/grpc/grpc-web/tree/master/net/grpc/gateway [↩](#a16) -17.
https://www.envoyproxy.io/docs/envoy/latest/configuration/http_filters/grpc_web_filter [↩](#a17) -18.
https://streams.spec.whatwg.org/ [↩](#a18) -19.
The Improbable client supports client-side and + 1. [improbable.io/games/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis](https://improbable.io/games/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis) [↩](#a1) + 2. [github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md) [↩](#a2) + 3. [github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md) [↩](#a3) + 4. [github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md#protocol-differences-vs-grpc-over-http2](https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-WEB.md#protocol-differences-vs-grpc-over-http2) [↩](#a4) + 5. [github.com/improbable-eng/grpc-web](https://github.com/improbable-eng/grpc-web) [↩](#a5) + 6. [github.com/grpc/grpc-web](https://github.com/grpc/grpc-web) [↩](#a6) + 7. [github.com/improbable-eng/grpc-web/issues/162](https://github.com/improbable-eng/grpc-web/issues/162) [↩](#a7) + 8. [github.com/grpc/grpc-web/issues/91](https://github.com/grpc/grpc-web/issues/91) [↩](#a8) + 9. [github.com/improbable-eng/grpc-web/tree/master/client/grpc-web](https://github.com/improbable-eng/grpc-web/tree/master/client/grpc-web) [↩](#a9) +10. [npmjs.com/package/@improbable-eng/grpc-web](https://www.npmjs.com/package/@improbable-eng/grpc-web) [↩](#a10) +11. [github.com/improbable-eng/grpc-web/tree/master/go/grpcweb](https://github.com/improbable-eng/grpc-web/tree/master/go/grpcweb) [↩](#a11) +12. [github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy](https://github.com/improbable-eng/grpc-web/tree/master/go/grpcwebproxy) [↩](#a12) +13. [github.com/grpc/grpc-web/tree/master/javascript/net/grpc/web](https://github.com/grpc/grpc-web/tree/master/javascript/net/grpc/web) [↩](#a13) +14. [developers.google.com/closure](https://developers.google.com/closure) [↩](#a14) +15. [npmjs.com/package/grpc-web](https://www.npmjs.com/package/grpc-web) [↩](#a15) +16. [github.com/grpc/grpc-web/tree/master/net/grpc/gateway](https://github.com/grpc/grpc-web/tree/master/net/grpc/gateway) [↩](#a16) +17. [envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_web_filter](https://www.envoyproxy.io/docs/envoy/latest/configuration/http/http_filters/grpc_web_filter) [↩](#a17) +18. [streams.spec.whatwg.org](https://streams.spec.whatwg.org) [↩](#a18) +19. The Improbable client supports client-side and bi-directional streaming with an experimental websocket transport. This is not part of the gRPC-Web spec, and is not recommended for production use. [↩](#a19) -20.
`grpcweb` allows server streaming methods to be called, but +20. `grpcweb` allows server streaming methods to be called, but it doesn't return data until the stream has closed. [↩](#a20) -21.
https://grpc.io/blog/grpc-web-ga [↩](#a21) -22.
https://github.com/grpc/grpc-web/blob/master/ROADMAP.md [↩](#a22) -23.
https://docs.google.com/forms/d/1NjWpyRviohn5jaPntosBHXRXZYkh_Ffi4GxJZFibylM [↩](#a23) +21. [gRPC-Web is Generally Available](/blog/grpc-web-ga) [↩](#a21) +22. [github.com/grpc/grpc-web/blob/master/doc/roadmap.md](https://github.com/grpc/grpc-web/blob/master/doc/roadmap.md) [↩](#a22) +23. [docs.google.com/forms/d/1NjWpyRviohn5jaPntosBHXRXZYkh_Ffi4GxJZFibylM](https://docs.google.com/forms/d/1NjWpyRviohn5jaPntosBHXRXZYkh_Ffi4GxJZFibylM) [↩](#a23)