{"id":15014000,"url":"https://github.com/wechaty/grpc","last_synced_at":"2025-04-30T19:08:15.847Z","repository":{"id":37172349,"uuid":"132313422","full_name":"wechaty/grpc","owner":"wechaty","description":"gRPC Service \u0026 Protocol Buffers for Wechaty Puppet","archived":false,"fork":false,"pushed_at":"2023-12-11T08:50:13.000Z","size":626,"stargazers_count":25,"open_issues_count":27,"forks_count":22,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-30T19:02:39.536Z","etag":null,"topics":["grpc","puppet","wechaty"],"latest_commit_sha":null,"homepage":"https://wechaty.github.io/grpc/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wechaty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-05-06T06:38:27.000Z","updated_at":"2024-09-10T06:02:18.000Z","dependencies_parsed_at":"2024-01-23T21:15:54.706Z","dependency_job_id":"782970a3-948c-4d89-8a42-545d92323bef","html_url":"https://github.com/wechaty/grpc","commit_stats":null,"previous_names":["chatie/grpc"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wechaty%2Fgrpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wechaty%2Fgrpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wechaty%2Fgrpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wechaty%2Fgrpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wechaty","download_url":"https://codeload.github.com/wechaty/grpc/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251767204,"owners_count":21640468,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grpc","puppet","wechaty"],"created_at":"2024-09-24T19:45:02.956Z","updated_at":"2025-04-30T19:08:15.825Z","avatar_url":"https://github.com/wechaty.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- markdownlint-disable MD033 MD041 --\u003e\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"docs/images/wechaty-grpc-logo.svg\" width=\"400\" /\u003e\n\u003cbr /\u003e\n\u003ch1\u003eWechaty gRPC\u003c/h1\u003e\n\u003cp\u003e\ngRPC Service \u0026 Protocol Buffers for Wechaty Puppet\n\u003c/p\u003e\n\u003ca href=\"https://github.com/wechaty/grpc/issues\n\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/wechaty/grpc?style=flat-square\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/wechaty/grpc/network/members\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/wechaty/grpc?style=flat-square\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/wechaty/grpc/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/wechaty/grpc?style=flat-square\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/wechaty/grpc/blob/master/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/wechaty/grpc?style=flat-square\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/Chatie/tsconfig/issues/16\"\u003e\u003cimg src=\"https://img.shields.io/badge/ES-Modules-brightgreen\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![Node.js NPM](https://github.com/wechaty/grpc/actions/workflows/node.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/node.yml)\n[![C# Nuget](https://github.com/wechaty/grpc/actions/workflows/csharp.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/csharp.yml)\n[![Go](https://github.com/wechaty/grpc/actions/workflows/go.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/go.yml)\n[![Java Maven](https://github.com/wechaty/grpc/actions/workflows/java.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/java.yml)\n[![PHP](https://github.com/wechaty/grpc/actions/workflows/php.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/php.yml)\n[![Python PyPI](https://github.com/wechaty/grpc/actions/workflows/python.yml/badge.svg)](https://github.com/wechaty/grpc/actions/workflows/python.yml)\n\n[![NPM Version](https://img.shields.io/npm/v/wechaty-grpc?color=brightgreen\u0026label=NPM\u0026style=flat-square)](https://www.npmjs.com/package/wechaty-grpc)\n[![PyPI Version](https://img.shields.io/pypi/v/chatie-grpc?color=blue\u0026label=PyPI\u0026style=flat-square)](https://pypi.org/project/chatie-grpc/)\n[![Java Version](https://img.shields.io/maven-central/v/io.github.wechaty/grpc?label=Java\u0026style=flat-square)](https://mvnrepository.com/artifact/io.github.wechaty/grpc)\n[![PHP Version](https://img.shields.io/packagist/v/wechaty/php-grpc?style=flat-square)](https://packagist.org/packages/wechaty/php-grpc)\n[![node](https://img.shields.io/node/v/wechaty.svg?maxAge=604800\u0026label=Node.js\u0026style=flat-square)](https://nodejs.org/)\n[![Python 3.7](https://img.shields.io/badge/python-3.7+-blue.svg?label=Python\u0026style=flat-square)](https://www.python.org/downloads/release/python-370/)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/wechaty/go-wechaty?style=flat-square)](https://pkg.go.dev/github.com/wechaty/grpc/go/wechaty)\n\n\u003c/div\u003e\n\n\u003cdetails open=\"open\"\u003e\n\u003csummary\u003eTable of Contents\u003c/summary\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003ca href=\"#About\"\u003eAbout\u003c/a\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"#Usage\"\u003eUsage\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#Nodejs\"\u003eNode.js\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Python\"\u003ePython\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Go\"\u003eGo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Java\"\u003eJava\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#PHP\"\u003ePHP\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#CSharp\"\u003eCSharp\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003ca href=\"#Development\"\u003eDevelopment\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"#Debug\"\u003eDebug\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Build\"\u003eBuild\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Generate-Stubs\"\u003eGenerate Stubs\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#OpenAPI\"\u003eOpenAPI\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#gRPC-Web\"\u003egRPC Web\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Resources\"\u003eResources\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Maintainer\"\u003eMaintainer\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#Copyright--License\"\u003eCopyright \u0026 License\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\n## About\n\ngRPC 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.\n\n## Usage\n\n### Node.js\n\n[wechaty-grpc@NPM](https://www.npmjs.com/package/wechaty-grpc)\n\n**Docs:**\n  \n- \u003chttps://paka.dev/npm/wechaty-grpc\u003e\n- \u003chttps://wechaty.github.io/grpc/\u003e\n\n**Maintainer:**\n\n- [@huan](https://github.com/huan) - Huan LI (李卓桓)\n\n### Python\n\n[chatie-grpc@PyPI](https://pypi.org/project/chatie-grpc)\n\n**Maintainer:**\n\n- [@wj-Mcat](https://github.com/wj-Mcat) - Jingjing WU (吴京京)\n\n### Go\n\n[github.com/wechaty/go-grpc](https://github.com/wechaty/go-grpc)\n\n**Maintainer:**\n\n- [@dchaofei](https://github.com/dchaofei) - Chaofei DING (丁超飞)\n\n### Java\n\n[https://mvnrepository.com/artifact/io.github.wechaty/grpc](https://mvnrepository.com/artifact/io.github.wechaty/grpc)\n\n**Maven:**\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003eio.github.wechaty\u003c/groupId\u003e\n    \u003cversion\u003e0.11.25\u003c/version\u003e\n    \u003cartifactId\u003egrpc\u003c/artifactId\u003e\n\u003c/dependency\u003e\n```\n\n**Gradle:**\n\n```groovy\ncompile 'io.github.wechaty:grpc:0.11.25'\n```\n\n**Maintainer:**\n\n- [@diaozxin007](https://github.com/diaozxin007) - Zhengxin DIAO (刁政欣)\n\n### PHP\n\n[github.com/wechaty/php-grpc](https://github.com/wechaty/php-grpc)\n\n**Maintainer:**\n\n- [@zhangchunsheng](https://github.com/zhangchunsheng) - Chunsheng ZHANG (张春生)\n\n### CSharp\n\n[Wechaty.Grpc @ Nuget](https://www.nuget.org/packages/Wechaty.Grpc)\n\n**Maintainer:**\n\n- [@Darren](https://github.com/jesn) - Darren (郑波)\n\n## Development\n\n### Debug\n\n- [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)\n- [A gRPC CLI interface for easy testing against gRPC servers with Node.js REPL](https://github.com/njpatel/grpcc)\n\n```shell\ngrpcc --proto ./service/myservice.proto --address 127.0.0.1:3466\n```\n\n### Build\n\n```shell\n./scripts/install-protoc.sh\nnpm install\n```\n\n\u003e \u003chttps://github.com/google/protobuf/releases/latest\u003e\n\n### Generate Stubs\n\n```shell\nnpm run generate\n```\n\n#### 1. JS for Protocol Buffer\n\n```shell\nprotoc \\\n  --js_out=\"import_style=commonjs,binary:${OUT_DIR}\"\n```\n\n\u003e \u003chttps://github.com/google/protobuf/releases/latest\u003e\n\n#### 2. JS for gRPC Stubs\n\n```shell\nprotoc \\\n  --plugin=\"protoc-gen-grpc=`which grpc_tools_node_protoc_plugin`\" \\\n  --grpc_out=\"${OUT_DIR}\"\n```\n\n\u003e \u003chttps://www.npmjs.com/package/grpc-tools\u003e\n\n#### 3. TypeScript Typing Definations for Protocol Buffer \u0026 gRPC Stubs\n\n```shell\nprotoc \\\n  --plugin=\"protoc-gen-grpc=node_modules/grpc_tools_node_protoc_ts/bin/protoc-gen-ts\" \\\n  --grpc_out=\"${OUT_DIR}\"\n```\n\n\u003e \u003chttps://github.com/agreatfool/grpc_tools_node_protoc_ts\u003e\n\n#### 4. JS \u0026 TS for gRPC Web\n\n```shell\nprotoc \\\n  --plugin=\"protoc-gen-ts=node_modules/ts-protoc-gen/bin/protoc-gen-ts\" \\\n  --ts_out=\"service=true:${OUT_DIR}\"\n```\n\n\u003e \u003chttps://github.com/improbable-eng/ts-protoc-gen\u003e\n\n### Naming conventions \u0026 Style Guide\n\n1. [Google Cloud APIs - Naming conventions](https://cloud.google.com/apis/design/naming_convention)\n1. [Protocol Buffers - Developer Guide - Style Guide](https://developers.google.com/protocol-buffers/docs/style)\n\n## OpenAPI\n\nLearn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi).\n\n## gRPC Web\n\n- [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest)\n\n## RESOURCES\n\n### Documentation\n\n- [Protocol Buffers Language Guide (proto3)](https://developers.google.com/protocol-buffers/docs/proto3)\n- [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style)\n- [Protocol Buffers for TypeScript with Decorators](https://github.com/protobufjs/protobuf.js#using-decorators)\n- [Troubleshooting gRPC](https://github.com/grpc/grpc/blob/master/TROUBLESHOOTING.md)\n- [gRPC environment variables](https://github.com/grpc/grpc/blob/master/doc/environment_variables.md)\n- [How to Interact With and Debug a gRPC Server](https://medium.com/@EdgePress/how-to-interact-with-and-debug-a-grpc-server-c4bc30ddeb0b)\n\n### Links\n\n- [探讨gRPC的Node技术生态及实现工具](https://xenojoshua.com/2018/02/grpc-node-ecosystem/)\n- [gRPC Basics - Node.js](https://grpc.io/docs/tutorials/basic/node.html)\n- [Building a gRPC service with Node.js](https://codelabs.developers.google.com/codelabs/cloud-grpc/)\n- [gRPC in 3 minutes (Node.js)](https://github.com/grpc/grpc/tree/master/examples/node)\n- [Listen gRPC and HTTP requests on the same port](https://medium.com/@drgarcia1986/listen-grpc-and-http-requests-on-the-same-port-263c40cb45ff)\n- [gRPC to JSON proxy generator following the gRPC HTTP spec](https://github.com/grpc-ecosystem/grpc-gateway)\n- [如何在 Node.js 中更优雅地使用 gRPC：grpc-helper](https://github.com/xizhibei/blog/issues/86)\n- [Comparing OpenAPI With gRPC](https://dzone.com/articles/comparing-openapi-with-grpc)\n\n#### Protocol Buffer\n\nThanks to the ecosystem of gRPC, we can generate OpenAPI Specification from our gRPC proto definitions automatically.\n\nWe 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.\n\n\u003cdiv align=\"center\"\u003e\u003ca link=\"https://github.com/wechaty/openapi\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/wechaty/grpc/master/docs/images/grpc-gateway-architecture.svg\" width=\"400\" /\u003e\u003ca\u003e\u003c/div\u003e\n\n\u003e Image credit: [gRPC Gateway](https://grpc-ecosystem.github.io/grpc-gateway/)\n\nLearn more about the RESTful API service for Wechaty from [Wechaty OpenAPI](https://github.com/wechaty/openapi).\n\nSee also:\n\n- [AIP-4222 - Routing headers](https://google.aip.dev/client-libraries/4222)\n- [gRPC-Gateway Official Website](https://grpc-ecosystem.github.io/grpc-gateway/)\n\n## gRPC Web\n\n- [gRPC-Web ReactJS client, Golang Server](https://github.com/longfellowone/grpcwebtest)\n\n## Resources\n\nCheck out [RESOURCES.md](RESOURCES.md) file for learning resources.\n\n## Guidelines\n\n- [Google Protocol Buffers Style Guide](https://developers.google.com/protocol-buffers/docs/style)\n- [Google Cloud API Naming Conventions](https://cloud.google.com/apis/design/naming_convention)\n- [Google Cloud Cloud API Design Guide](https://cloud.google.com/apis/design/)\n\n## Changelog\n\n### master v1.0 (Mar 14, 2022)\n\n1. v1.0 release\n1. add `post` event\n\n### v0.33 (Oct 18, 2021)\n\n- ~~[ ] Rename `ENUM` from `CONTACT_GENDER_MALE` to `MALE` ([#110](https://github.com/wechaty/grpc/issues/110))~~\n- [ ] Fix typos\n\n### v0.27\n\n1. ES Modules support\n1. Export generated protocol buffers class as `puppet`\n\n### v0.20 (Feb 21, 2021)\n\n1. Rename NPM module name from `@chatie/grpc` to `wechaty-grpc`\n1. Add OpenAPI annotations \u0026 generators for supporting \u003chttps://github.com/wechaty/openapi\u003e\n1. Code clean.\n\n### v0.18 (Oct 15, 2020)\n\n- Add new `MessageFileStream` and `MessageImageStream` to replace the `MessageFile` and `MessageImage` method to avoid blocking nodejs event loop when sending large files ([#88](https://github.com/wechaty/grpc/pull/88)) by [@windmemory](https://github.com/windmemory)\n- Add new `MessageSendFileStream` to replace the `MessageSendFile` method to avoid blocking nodejs event loop when sending large files ([#89](https://github.com/wechaty/grpc/pull/89)) by [@windmemory](https://github.com/windmemory)\n\n### v0.17 (Aug 5, 2020)\n\n- Add PHH Support ([#76](https://github.com/wechaty/grpc/pull/76) [#78](https://github.com/wechaty/grpc/pull/78)) by [@zhangchunsheng](https://github.com/zhangchunsheng)\n- Publish PHP Module at \u003chttps://github.com/wechaty/php-grpc\u003e\n\n### v0.13 (Apr 19, 2020)\n\n- Add Java Support ([#52](https://github.com/wechaty/grpc/issues/52) [#53](https://github.com/wechaty/grpc/issues/53) by [@diaozxin007](https://github.com/diaozxin007))\n- Publish Java Module at [Open Source Project Repository HostingOSSRH-56843 - Release the Chatie/grpc Java Client](https://issues.sonatype.org/browse/OSSRH-56843)\n\n### v0.11 (Apr 10, 2020)\n\n- Add Go Support ([#50](https://github.com/wechaty/grpc/issues/50) by [@dchaofei](https://github.com/dchaofei))\n- Publish Go Module at \u003cgithub.com/wechaty/go-grpc\u003e\n\nContributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\nSee [CONTRIBUTING.md](http://github.com/wechaty/grpc/blob/master/CONTRIBUTING.md) for more details.\n\n## Releases\n\nSince 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.\n\n## Contributors\n  \n\u003ca href=\"https://github.com/wechaty/grpc/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=wechaty/grpc\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n\n## Maintainer\n\nWechaty 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).\n\n## Getting help\n\nWechaty 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.\n\n## Copyright \u0026 License\n\nWechaty 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/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwechaty%2Fgrpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwechaty%2Fgrpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwechaty%2Fgrpc/lists"}