spring-projects / spring-projects/spring-grpc

Support for grpc-web

Open
#427 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Java
Stars
413
Forks
95
Avg merge
4d 6h
Merged PRs (30d)
2

Description

There is a grpc-web spec designed to make gRPC accessible to browser-based clients. There is currently no support for it in grpc-java, but for a Spring HTTP (MVC or webflux) app it is conceptually just a set of encoders and decoders. The existing Protobuf{Encoder,Decoder} and the corresponding JSON variants should be extendable, making it an easier target for webflux. There might be an issue with JSON and bidirectional streaming, since that is not supported in the existing webflux components (we'd have to manually scan for the JSON object boundaries in a non-blocking way because the gson library used by grpc-java is blocking).

Similar to #424 because it involves decoders and encoders and the JSON support is already nearly there in spring-web.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the grpc-web PROTOCOL-WEB.md specification, the existing ProtobufEncoder and ProtobufDecoder, their JSON variants, and the related discussion in issue #424. Determine the encoder and decoder changes needed for Spring MVC or WebFlux, including whether JSON bidirectional streaming is feasible; done means grpc-web requests and responses are supported without breaking existing behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
grpc, java, spring
Domain
api, backend, web-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.