Hello all,
I am currently evaluating gRPC for an IoT type application. We currently have several microservices written in Js that talk a custom protocol but we want to move on to Typescript and a standard RPC mechanism.
I have quiet a few questions on the state of the gRPC/Node.js project and implementation:
1 | What is the relationship of the projects on
https://github.com/grpc/grpc and
https://github.com/grpc/grpc-node? Where should I file Node.js or Js specific issues or PRs?
2 | What is the relationship of grpc-node and protobuf.js? The grpc-native-core package has a dependency on an outdated protobuf version (^5.0.0) but from what I gather from grpc-protobufjs, it can somehow also deal with protobuf.js 6. How does that work? To me this kind of flexibility seems to make the project overly complex. Also, looking into
https://github.com/grpc/grpc-node/issues/15 gives me the impression, that protobuf.js 6 is not fully supported yet.
3 | Code generation: Both grpc-tools and protobuf.js contain a code generator. My impression is that the grpc-tools generator generates only service files, while the one from protobuf.js also generates stubs for message definitions (and also Typescript definitions in v6.8). How are these supposed to be used together? Are there any plans to make this easier and more coherent?
4 | Typescript: I think it would not be too hard to generate Ts definition files alongside the Js files, all relevant type information is here. I currently have manually written definition files for my message types and services, but those need a few modification to grpc-native-core/index.d.ts. There are a lot of missed opportunities in type safety here, falling back to the 'any' type, when a generic parameter would work. But before tackling this area, I need to have the previous questions answered. Also, is there any general interest in this area from other people? Are there any plans to make the Typescript integration better?
5 | There should be more documentation, particularily:
* how does grpc-node interact with protobuf.js
* what is generated from the protoc plugin
* a roadmap
* what is currently worked on
Best,
André