UNPKG

@chatie/grpc

Version:
214 lines (140 loc) 8.68 kB
# GRPC [![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) [![Go](https://github.com/chatie/grpc/workflows/Go/badge.svg)](https://github.com/chatie/grpc/actions?query=workflow%3AGo) [![Maven](https://github.com/Chatie/grpc/workflows/Maven/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3A%22Maven%22) [![Node.js](https://github.com/Chatie/grpc/workflows/Node.js/badge.svg)](https://github.com/Chatie/grpc/actions?query=workflow%3ANode.js) ![chatie grpc](https://chatie.io/grpc/images/grpc.png) [![NPM Version](https://img.shields.io/npm/v/@chatie/grpc?color=brightgreen&label=NPM)](https://www.npmjs.com/package/@chatie/grpc) [![PyPI Version](https://img.shields.io/pypi/v/chatie-grpc?color=blue&label=PyPI)](https://pypi.org/project/chatie-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) [![Java Version](https://img.shields.io/maven-central/v/io.github.wechaty/grpc?label=Java)](https://mvnrepository.com/artifact/io.github.wechaty/grpc) gRPC for Chatie ## Usage ### Node.js [@chatie/grpc@NPM](https://www.npmjs.com/package/@chatie/grpc) ### Python [chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc) ### Go [github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc) ### Java [https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc) Maven: ```xml <dependency> <groupId>io.github.wechaty</groupId> <version>0.11.25</version> <artifactId>grpc</artifactId> </dependency> ``` Gradle: ```groovy compile 'io.github.wechaty:grpc:0.11.25' ``` ## 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) ## Build ```shell ./scripts/install-protoc.sh npm install ``` > <https://github.com/google/protobuf/releases/latest> ## Generate Stubs ```shell npm run generate ``` ### 1. JS for Protocol Buffer ```shell protoc \ --js_out="import_style=commonjs,binary:${OUT_DIR}" ``` > <https://github.com/google/protobuf/releases/latest> ### 2. JS for gRPC Stubs ```shell protoc \ --plugin="protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`" \ --grpc_out="${OUT_DIR}" ``` > <https://www.npmjs.com/package/grpc-tools> ### 3. TypeScript Typing Definations for Protocol Buffer & gRPC Stubs ```shell protoc \ --plugin="protoc-gen-grpc=node_modules/grpc_tools_node_protoc_ts/bin/protoc-gen-ts" \ --grpc_out="${OUT_DIR}" ``` > <https://github.com/agreatfool/grpc_tools_node_protoc_ts> ### 4. JS & TS for gRPC Web ```shell protoc \ --plugin="protoc-gen-ts=node_modules/ts-protoc-gen/bin/protoc-gen-ts" \ --ts_out="service=true:${OUT_DIR}" ``` > <https://github.com/improbable-eng/ts-protoc-gen> ## Development ### gRPC CLI Debug - [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 ``` ## Documentatoin - [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3) - [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style) - [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) ## Resources - [探讨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) ### 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) ### 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) ## History ### v0.13 (Apr 19, 2020) - Add Java Support ([#52](https://github.com/Chatie/grpc/issues/52) [#53](https://github.com/Chatie/grpc/issues/53) by [@diaozxin007](https://github.com/diaozxin007)) - Publish Java Module at [Open Source Project Repository HostingOSSRH-56843 - Release the Chatie/grpc Java Client](https://issues.sonatype.org/browse/OSSRH-56843) ### v0.11 (Apr 10, 2020) - Add Go Support ([#50](https://github.com/Chatie/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei)) - Publish Go Module at <github.com/wechaty/go-grpc> ### v0.6 (Feb 2020) - Align gRPC Services with Wechaty Puppet Abstraction - Add Unit Tests ### v0.2 (Jul 2018) - Automatic Generating gRPC Stubs - Publish to NPM ### v0.0.1 (May 2018) Initial commiit ## Author [Huan LI](https://github.com/huan) ([李卓桓](http://linkedin.com/in/zixia)) zixia@zixia.net [![Profile of Huan LI (李卓桓) on StackOverflow](https://stackexchange.com/users/flair/265499.png)](https://stackexchange.com/users/265499) ## Copyright & License - Code & Docs © 2018-now Huan LI \<zixia@zixia.net\> - Code released under the Apache-2.0 License - Docs released under Creative Commons