diff --git a/README.md b/README.md index cb91d26c..e942fe8c 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,69 @@ -# Wechaty GRPC - -[![Node.js](https://github.com/Chatie/grpc/workflows/Node.js/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js) -[![NPM](https://github.com/Chatie/grpc/workflows/NPM/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3ANPM) -[![PyPI](https://github.com/Chatie/grpc/workflows/PyPI/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3APyPI) -[![Maven](https://github.com/Chatie/grpc/workflows/Maven/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22) -[![PHP](https://github.com/Chatie/grpc/workflows/PHP/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3APHP) -[![Go](https://github.com/chatie/grpc/workflows/Go/badge.svg)](https://github.com/chatie/grpc/actions?query=workflow%3AGo) - -![Wechaty gRPC](docs/images/grpc.png) - -[![NPM Version](https://img.shields.io/npm/v/wechaty-grpc?color=brightgreen&label=NPM)](https://www.npmjs.com/package/wechaty-grpc) -[![PyPI Version](https://img.shields.io/pypi/v/chatie-grpc?color=blue&label=PyPI)](https://pypi.org/project/chatie-grpc/) -[![Java Version](https://img.shields.io/maven-central/v/io.github.wechaty/grpc?label=Java)](https://mvnrepository.com/artifact/io.github.wechaty/grpc) -[![PHP Version](https://img.shields.io/packagist/v/wechaty/php-grpc)](https://packagist.org/packages/wechaty/php-grpc) - -[![node](https://img.shields.io/node/v/wechaty.svg?maxAge=604800&label=Node.js)](https://nodejs.org/) -[![Python 3.7](https://img.shields.io/badge/python-3.7+-blue.svg?label=Python)](https://www.python.org/downloads/release/python-370/) -![Go Version](https://img.shields.io/github/go-mod/go-version/wechaty/go-wechaty) - -gRPC for Wechaty Puppet Service - -## USAGE +
+ +
+

Wechaty gRPC

+

+gRPC Service & Protocol Buffers for Wechaty Puppet +

+ + + + +
+ +
+ +[![Node.js](https://github.com/Chatie/grpc/workflows/Node.js/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js) [![NPM](https://github.com/Chatie/grpc/workflows/NPM/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3ANPM) [![PyPI](https://github.com/Chatie/grpc/workflows/PyPI/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3APyPI) [![Maven](https://github.com/Chatie/grpc/workflows/Maven/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22) [![PHP](https://github.com/Chatie/grpc/workflows/PHP/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3APHP) [![Go](https://github.com/chatie/grpc/workflows/Go/badge.svg)](https://github.com/chatie/grpc/actions?query=workflow%3AGo) + +[![NPM Version](https://img.shields.io/npm/v/wechaty-grpc?color=brightgreen&label=NPM&style=flat-square)](https://www.npmjs.com/package/wechaty-grpc) [![PyPI Version](https://img.shields.io/pypi/v/chatie-grpc?color=blue&label=PyPI&style=flat-square)](https://pypi.org/project/chatie-grpc/) [![Java Version](https://img.shields.io/maven-central/v/io.github.wechaty/grpc?label=Java&style=flat-square)](https://mvnrepository.com/artifact/io.github.wechaty/grpc) [![PHP Version](https://img.shields.io/packagist/v/wechaty/php-grpc?style=flat-square)](https://packagist.org/packages/wechaty/php-grpc) [![node](https://img.shields.io/node/v/wechaty.svg?maxAge=604800&label=Node.js&style=flat-square)](https://nodejs.org/) [![Python 3.7](https://img.shields.io/badge/python-3.7+-blue.svg?label=Python&style=flat-square)](https://www.python.org/downloads/release/python-370/) [![Go Version](https://img.shields.io/github/go-mod/go-version/wechaty/go-wechaty?style=flat-square)](https://pkg.go.dev/github.com/chatie/grpc/go/wechaty) + +
+ +
+Table of Contents +
    +
  1. +About +
  2. +
  3. +Usage + +
  4. +
  5. +Development + +
  6. +
  7. OpenAPI
  8. +
  9. gRPC Web
  10. +
  11. Resources
  12. +
  13. Contributing
  14. +
  15. Maintainer
  16. +
  17. Copyright & License
  18. +
+ +## About + +gRPC is a modern open-source high-performance Remote Procedure Call (RPC) framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking, and authentication. It is also applicable in the last mile of distributed computing to connect devices, mobile applications, and browsers to backend services. + +## Usage ### Node.js [wechaty-grpc@NPM](https://www.npmjs.com/package/wechaty-grpc) -Maintainer: +**Maintainer:** - [@huan](https://github.com/huan) - Huan LI (李卓桓) @@ -34,7 +71,7 @@ Maintainer: [chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc) -Maintainer: +**Maintainer:** - [@wj-Mcat](https://github.com/wj-Mcat) - Jingjing WU (吴京京) @@ -42,7 +79,7 @@ Maintainer: [github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc) -Maintainer: +**Maintainer:** - [@dchaofei](https://github.com/dchaofei) - Chaofei DING (丁超飞) @@ -50,7 +87,7 @@ Maintainer: [https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc) -Maven: +**Maven:** ```xml @@ -60,13 +97,13 @@ Maven: ``` -Gradle: +**Gradle:** ```groovy compile 'io.github.wechaty:grpc:0.11.25' ``` -Maintainer: +**Maintainer:** - [@diaozxin007](https://github.com/diaozxin007) - Zhengxin DIAO (刁政欣) @@ -74,28 +111,28 @@ Maintainer: [github.com/wechaty/php-grpc](https://github.comwechaty/php-grpc) -Maintainer: +**Maintainer:** - [@zhangchunsheng](https://github.com/zhangchunsheng) - Chunsheng ZHANG (张春生) -### Csharp +### CSharp [Wechaty.Grpc @ Nuget](https://www.nuget.org/packages/Wechaty.Grpc) -Maintainer: +**Maintainer:** -- [@Darren](https://github.com/jesn) - Darren (郑波) +- [@Darren](https://github.com/jesn) - Darren (郑波) -## DEVELOPMENT +## Development ### Debug -- [GUI Client for GRPC Services](https://github.com/uw-labs/bloomrpc) - BloomRPC aim to give the simplest and efficient developer experience for exploring and querying your GRPC services.(Inspired by Postman and GraphQL Playground) +- [GUI Client for GRPC Services](https://github.com/uw-labs/bloomrpc) - BloomRPC aims to give the simplest and efficient developer experience for exploring and querying your GRPC services. (Inspired by Postman and GraphQL Playground) - [A gRPC CLI interface for easy testing against gRPC servers with Node.js REPL](https://github.com/njpatel/grpcc) - ```sh - grpcc --proto ./service/myservice.proto --address 127.0.0.1:3466 - ``` +```shell +grpcc --proto ./service/myservice.proto --address 127.0.0.1:3466 +``` ### Build @@ -153,13 +190,13 @@ protoc \ ## OpenAPI -Thanks for the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically. +Thanks to the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically. -We are using [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) as the OpenAPI Specification generator ([protoc-gen-openapiv2](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2)), and using [Like grpc-gateway, but written in node and dynamic](https://github.com/konsumer/grpc-dynamic-gateway) project to serve a HTTP RESTful API to gRPC proxy. +We are using [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) as the OpenAPI Specification generator ([protoc-gen-openapiv2](https://github.com/grpc-ecosystem/grpc-gateway/tree/master/protoc-gen-openapiv2)), and using [Like grpc-gateway, but written in node and dynamic](https://github.com/konsumer/grpc-dynamic-gateway) project to serve an HTTP RESTful API to gRPC proxy. -[![gRPC Gateway](docs/images/grpc-gateway-architecture.svg)](https://github.com/wechaty/openapi) +
-> Image credit: [grpc-gateway](https://grpc-ecosystem.github.io/grpc-gateway/) +> Image credit: [gRPC Gateway](https://grpc-ecosystem.github.io/grpc-gateway/) Learn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi). @@ -168,88 +205,18 @@ See also: [AIP-4222 - Routing headers](https://google.aip.dev/client-libraries/4 ## gRPC Web - [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest) -- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis) -- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts) -## RESOURCES +## Resources -### Guidelines +Check out [RESOURCES.md](RESOURCES.md) file for learning resources. + +## Guidelines - [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style) - [Google Cloud API Naming Conventions](https://cloud.google.com/apis/design/naming_convention) - [Google Cloud Cloud API Design Guide](https://cloud.google.com/apis/design/) -### Documentation - -- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3) -- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators) -- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md) -- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md) -- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b) - -### Links - -- [探讨gRPC的Node技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/) -- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html) -- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/) -- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node) -- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff) -- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) -- [如何在 Node.js 中更优雅地使用 gRPC:grpc-helper](https://github.com/xizhibei/blog/issues/86) - -#### Protocol Buffer - -- [Protocol Buffers for JavaScript (& TypeScript)](https://github.com/dcodeIO/protobuf.js) -- [Missing value/null support for scalar value types in proto 3](https://github.com/protocolbuffers/protobuf/issues/1606) -- [How to Make a Nullable Field in Proto3 for a HTTP Response?](https://stackoverflow.com/questions/57908389/how-to-make-a-nullable-field-in-proto3-for-a-http-response) - -#### TypeScript Generator - -- [A Typescript definition file generator for gRPC services](https://github.com/anfema/grpc-code-generator) -- [gRPC Web TypeScript Code Generation](https://github.com/improbable-eng/grpc-web/blob/master/ts/docs/code-generation.md) -- [Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web.](https://github.com/improbable-eng/ts-protoc-gen) - -#### Zoo Keeper - -- [ZooKeeper - The King of Coordination](https://www.elastic.co/blog/found-zookeeper-king-of-coordination) - -#### STUN - -- [How To TCP NAT Traversal using Node.js and a STUN Server](http://sogilis.com/blog/tcp-nat-traversal-nodejs-stun/) -- [chownat, allows two peers behind two separate NATs to directly communicate with each other.](https://samy.pl/chownat/) -- [What is STUN & TURN Server](https://stackoverflow.com/a/23307588/1123955) -- [NPM Search for: NAT Traversal](https://www.npmjs.com/search?q=nat+traversal) -- [NAT traversal by way of UPnP or NAT-PMP](https://github.com/tintfoundation/nat-traverse) -- [How To TCP NAT Traversal using Node.js and a STUN Server](https://gist.github.com/mildred/b803e48801f9cdd8a4a8) -- [STUN, TURN, and ICE - AnyConnect pioneered the STUN, TURN, and ICE NAT Traversal protocols](https://anyconnect.com/stun-turn-ice/) -- [What are STUN, TURN, and ICE?](https://www.twilio.com/docs/stun-turn/faq#faq-what-is-nat) -- [Set Phasers to STUN/TURN: Getting Started with WebRTC using Node.js, Socket.io and Twilio’s NAT Traversal Service](https://www.twilio.com/blog/2014/12/set-phasers-to-stunturn-getting-started-with-webrtc-using-node-js-socket-io-and-twilios-nat-traversal-service.html) - -TCP hole punching - -#### Reverse Engineering - -- [A toolset for reverse engineering and fuzzing Protobuf-based apps](https://github.com/marin-m/pbtk) - -#### Python Stub - -- [gRPC typing stubs for Python](https://github.com/shabbyrobe/grpc-stubs) - -#### CSharp grpc - -- [An introduction to NuGet (microsoft)](https://docs.microsoft.com/en-us/nuget/what-is-nuget) -- [Create a gRPC client and server in ASP.NET Core (microsoft)](https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio) -- [ASP.NET Core 3.0 使用gRPC (晓晨Master)](https://www.cnblogs.com/stulzq/p/11581967.html) - -#### gRPC with XDS (Universal Data Plane API) and Service Mesh - -- [Traffic Director with proxyless gRPC services overview](https://cloud.google.com/traffic-director/docs/proxyless-overview) -- [Build Your Own Envoy Control Plane - Steve Sloka, VMware](https://www.youtube.com/watch?v=qAuq4cKEG_E) -- [Service mesh data plane vs. control plane](https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc) -- [gRPC xDS Loadbalancing](https://salmaan-rashid.medium.com/grpc-xds-loadbalancing-a05f8bd754b8) -- [Envoy Dynamic configuration (control plane)](https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/dynamic-configuration-control-plane) - -## HISTORY +## Changelog ### master v0.27 @@ -282,28 +249,28 @@ TCP hole punching - Add Go Support ([#50](https://github.com/Chatie/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei)) - Publish Go Module at -### v0.6 (Feb 2020) +Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. -- Align gRPC Services with Wechaty Puppet Abstraction -- Add Unit Tests +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request -### v0.2 (Jul 2018) +See [CONTRIBUTING.md](http://github.com/wechaty/grpc/blob/master/CONTRIBUTING.md) for more details. -- Automatic Generating gRPC Stubs -- Publish to NPM +## Releases -### v0.0.1 (May 2018) +Since its creation in 2016, a number of Wechaty versions have been released. For more information about the release history and the current stable version, you can read the [Wechaty release notes](https://github.com/Wechaty/wechaty/releases) on Github. -Initial commiit +## Maintainer -## MAINTAINER +Wechaty is maintained by [Huan](https://github.com/huan), [Rui](https://github.com/lijiarui), and a community of Open Source Contributors. We are always looking for people to join the Wechaty community to maintain the Wechaty codebase and documentation. You necessarily don't have to be a programmer to contribute to Wechaty. To get started contributing, you can read the [CONTRIBUTING.md](http://github.com/wechaty/grpc/blob/master/CONTRIBUTING.md). -[Huan LI](https://github.com/huan) ([李卓桓](http://linkedin.com/in/zixia)), Google Developer Expert in Machine Learning (ML GDE), +## Getting help -[![Profile of Huan LI (李卓桓) on StackOverflow](https://stackexchange.com/users/flair/265499.png)](https://stackexchange.com/users/265499) +Wechaty has a community of very helpful contributors on different platforms you can join to get help from. Before joining any of the communities, we recommend that you read our Code of conduct]o that you adhere to our community guidelines. A full list of the different Wechaty communities can be accessed from the [Wechaty community](https://wechaty.js.org/docs/community/) section of this documentation. -## COPYRIGHT & LICENSE +## Copyright & License -- Code & Docs © 2018-now Wechaty Authors \ -- Code released under the Apache-2.0 License -- Docs released under Creative Commons +Wechaty is an [Open Source Project](https://opensource.com/resources/what-open-source). It is released under [Apache-2.0 license](https://github.com/wechaty/wechaty/blob/master/LICENSE) and the corresponding documentation is released under the [Creative Commons license](https://creativecommons.org/licenses/). diff --git a/RESOURCES.md b/RESOURCES.md new file mode 100644 index 00000000..ebd96a98 --- /dev/null +++ b/RESOURCES.md @@ -0,0 +1,136 @@ +
+

Wechaty gRPC

+

+gRPC Service & Protocol Buffers for Wechaty Puppet +

+Learning Resources +

+
+ +## gRPC + +- [探讨 gRPC 的 Node 技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/) +- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html) +- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/) +- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node) +- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff) +- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway) +- [如何在 Node.js 中更优雅地使用 gRPC:grpc-helper](https://github.com/xizhibei/blog/issues/86) + +#### Official Libraries and Tools + +- [gRPC Core](https://github.com/grpc/grpc) - C, C++, Ruby, Node.js, Python, PHP, C#, Objective-C +- [gRPC Java](https://github.com/grpc/grpc-java) - The Java gRPC implementation. HTTP/2 based RPC +- [gRPC Kotlin](https://github.com/grpc/grpc-kotlin) - The Kotlin gRPC implementation. Based on gRPC Java +- [gRPC Node.js](https://github.com/grpc/grpc-node) - gRPC for Node.js +- [gRPC Go](https://github.com/grpc/grpc-go) - The Go language implementation of gRPC. HTTP/2 based RPC +- [gRPC Swift](https://github.com/grpc/grpc-swift) - The Swift language implementation of gRPC +- [gRPC Dart](https://github.com/grpc/grpc-dart) - The Dart language implementation of gRPC +- [gRPC C#](https://github.com/grpc/grpc-dotnet) - The C# language implementation of gRPC +- [gRPC Web](https://github.com/grpc/grpc-web) - gRPC for Web Clients +- [gRPC Ecosystem](https://github.com/grpc-ecosystem) - gRPC Ecosystem that complements gRPC +- [gRPC contrib](https://github.com/grpc/grpc-contrib) - Known useful contributions around github +- [Homebrew gRPC](https://github.com/grpc/homebrew-grpc) - gRPC formulae repo for Homebrew +- [grpc_cli](https://github.com/grpc/grpc/blob/master/doc/command_line_tool.md) - gRPC CLI tool + +## Protocol Buffers + +- [Protocol Buffers for JavaScript (& TypeScript)](https://github.com/dcodeIO/protobuf.js) +- [Missing value/null support for scalar value types in proto 3](https://github.com/protocolbuffers/protobuf/issues/1606) +- [How to Make a Nullable Field in Proto3 for a HTTP Response?](https://stackoverflow.com/questions/57908389/how-to-make-a-nullable-field-in-proto3-for-a-http-response) + +#### Documentation + +- [Website](https://developers.google.com/protocol-buffers/) - Official website and documentation +- [Third-Party Add-ons for Protocol Buffers](https://github.com/protocolbuffers/protobuf/blob/master/docs/third_party.md) - List of add-ons for Protocol Buffers in the main Github repository + +#### Tools + +- [buf](https://buf.build) - Protobuf tool that includes linting and breaking change detection. + Allows many types of input including directly checking remote repositories and tarballs, and has a built-in compiler as well. +- [prototools](https://github.com/sourcegraph/prototools) - Documentation generator & other tools for protobuf/gRPC +- [protoc-gen-doc](https://github.com/pseudomuto/protoc-gen-doc) - Documentation generator plugin for Google Protocol Buffers +- [Protoxygen](https://github.com/lisroach/Protoxygen) - [Doxygen](http://doxygen.nl) plugin to generate documentation for protobuf/gRPC +- [openapi2proto](https://github.com/NYTimes/openapi2proto) - A tool for generating Protobuf v3 schemas and gRPC service definitions from OpenAPI specifications +- [Wireshark Protobuf Dissector](https://github.com/128technology/protobuf_dissector) - A Wireshark Lua plugin for decoding Google protobuf packets. [Relevant PR and discussion](https://github.com/google/protobuf/issues/3303). +- [protoc-gen-lint](https://github.com/ckaznocha/protoc-gen-lint) - A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations +- [prototool](https://github.com/uber/prototool) - Compile, lint, and format Protobuf files, and generate stubs for any lanuguage/plugin, along with Vim/IDE integration +- [protoc-gen-validate](https://github.com/lyft/protoc-gen-validate) - Protoc plugin to generate polyglot message validators +- [go-proto-validators](https://github.com/mwitkow/go-proto-validators) - Generate message validators from .proto annotations, used in `grpc_validator` Go gRPC middleware. +- [protolock](https://github.com/nilslice/protolock) - Protocol Buffer companion tool to `protoc` and `git`. Track your .proto files and prevent changes to messages and services which impact API compatibilty. +- [protoc-gen-map](https://github.com/jackskj/protoc-gen-map) - SQL data mapper framework for Protocol Buffers. +- [api-linter](https://github.com/googleapis/api-linter) - A linter for APIs defined in protocol buffers. +- [protoc-gen-struct-transformer](https://github.com/bold-commerce/protoc-gen-struct-transformer) - Transformation functions generator for Protocol Buffers. +- [pbvm](https://github.com/ekalinin/pbvm) - Protocol Buffers Version Manager +- [clang-format](https://clang.llvm.org/docs/ClangFormat.html) - Protocol Buffers formating tool + Can be used to format on save in editor such as [Visual studio code](https://marketplace.visualstudio.com/items?itemName=xaver.clang-format) or [IntelliJ](https://plugins.jetbrains.com/plugin/14004-protocol-buffer-editor). +- [intellij-protobuf-plugin](https://github.com/devkanro/intellij-protobuf-plugin) - IntelliJ-based IDEs Protobuf Language Plugin that provides Protobuf language support. + +## gRPC Web + +- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis) +- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts) +- [gRPC-Web: Moving past REST+JSON towards type-safe Web APIs](https://improbable.io/blog/grpc-web-moving-past-restjson-towards-type-safe-web-apis) +- [Library for making gRPC-Web requests intended for TypeScript from either a browser or Node.js.](https://github.com/improbable-eng/grpc-web/tree/master/ts) + +## TypeScript Generator + +- [A Typescript definition file generator for gRPC services](https://github.com/anfema/grpc-code-generator) +- [gRPC Web TypeScript Code Generation](https://github.com/improbable-eng/grpc-web/blob/master/ts/docs/code-generation.md) +- [Protocol Buffers Compiler (protoc) plugin for TypeScript and gRPC-Web.](https://github.com/improbable-eng/ts-protoc-gen) + +## gRPC with XDS (Universal Data Plane API) and Service Mesh + +- [Traffic Director with proxyless gRPC services overview](https://cloud.google.com/traffic-director/docs/proxyless-overview) +- [Build Your Own Envoy Control Plane - Steve Sloka, VMware](https://www.youtube.com/watch?v=qAuq4cKEG_E) +- [Service mesh data plane vs. control plane](https://blog.envoyproxy.io/service-mesh-data-plane-vs-control-plane-2774e720f7fc) +- [gRPC xDS Loadbalancing](https://salmaan-rashid.medium.com/grpc-xds-loadbalancing-a05f8bd754b8) +- [Envoy Dynamic configuration (control plane)](https://www.envoyproxy.io/docs/envoy/latest/start/sandboxes/dynamic-configuration-control-plane) + +#### More TypeScript + +- [ts-protoc-gen](https://github.com/improbable-eng/ts-protoc-gen) - Protoc Plugin for TypeScript Declarations +- [protoc-gen-tstypes](https://godoc.org/github.com/tmc/grpcutil/protoc-gen-tstypes) - Configurable Protoc Plugin to generate TypeScript types. +- [sisyphus.js](https://github.com/ButterCam/sisyphus-js) - gRPC runtime and compiler for Web Clients by HTTP transcoding. Recommend using with [Sisyphus](https://github.com/ButterCam/sisyphus) back-end framework. +- [protoc-gen-grpc-gateway-ts](https://github.com/grpc-ecosystem/protoc-gen-grpc-gateway-ts) - TypeScript client generator for the grpc-gateway project that generates idiomatic TypeScript clients that connect the web frontend and golang backend fronted by grpc-gateway. +- [protobuf-ts](https://github.com/timostamm/protobuf-ts) - Protocol buffers and RPC for Node.js and the Web Browser. Pure TypeScript. +- [ts-proto](https://github.com/stephenh/ts-proto) - Transforms your .proto files into strongly-typed, idiomatic TypeScript files! +- [grpc-js-typescript](https://github.com/badsyntax/grpc-js-typescript) - Examples of how to use gRPC with TypeScript & Node.js. + +## ZooKeeper + +- [ZooKeeper - The King of Coordination](https://www.elastic.co/blog/found-zookeeper-king-of-coordination) + +## Session Traversal Utilities for NAT (STUN) + +- [How To TCP NAT Traversal using Node.js and a STUN Server](http://sogilis.com/blog/tcp-nat-traversal-nodejs-stun/) +- [chownat, allows two peers behind two separate NATs to directly communicate with each other.](https://samy.pl/chownat/) +- [What is STUN & TURN Server](https://stackoverflow.com/a/23307588/1123955) +- [NPM Search for: NAT Traversal](https://www.npmjs.com/search?q=nat+traversal) +- [NAT traversal by way of UPnP or NAT-PMP](https://github.com/tintfoundation/nat-traverse) +- [How To TCP NAT Traversal using Node.js and a STUN Server](https://gist.github.com/mildred/b803e48801f9cdd8a4a8) +- [STUN, TURN, and ICE - AnyConnect pioneered the STUN, TURN, and ICE NAT Traversal protocols](https://anyconnect.com/stun-turn-ice/) +- [What are STUN, TURN, and ICE?](https://www.twilio.com/docs/stun-turn/faq#faq-what-is-nat) +- [Set Phasers to STUN/TURN: Getting Started with WebRTC using Node.js, Socket.io, and Twilio’s NAT Traversal Service](https://www.twilio.com/blog/2014/12/set-phasers-to-stunturn-getting-started-with-webrtc-using-node-js-socket-io-and-twilios-nat-traversal-service.html) + +## Reverse Engineering + +- [A toolset for reverse engineering and fuzzing Protobuf-based apps](https://github.com/marin-m/pbtk) + +## Python Stub + +- [gRPC typing stubs for Python](https://github.com/shabbyrobe/grpc-stubs) + +## CSharp gRPC + +- [An introduction to NuGet (microsoft)](https://docs.microsoft.com/en-us/nuget/what-is-nuget) +- [Create a gRPC client and server in ASP.NET Core (microsoft)](https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio) +- [ASP.NET Core 3.0 使用 gRPC (晓晨 Master)](https://www.cnblogs.com/stulzq/p/11581967.html) + +## Miscellaneous Documentation + +- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3) +- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators) +- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md) +- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md) +- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b) diff --git a/assets/images/wechaty-grpc-logo.svg b/assets/images/wechaty-grpc-logo.svg new file mode 100644 index 00000000..15412841 --- /dev/null +++ b/assets/images/wechaty-grpc-logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/images/grpc-gateway-architecture.svg b/docs/images/grpc-gateway-architecture.svg deleted file mode 100644 index 3c9347e3..00000000 --- a/docs/images/grpc-gateway-architecture.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/images/grpc.png b/docs/images/grpc.png deleted file mode 100644 index 073470a0..00000000 Binary files a/docs/images/grpc.png and /dev/null differ