Comments (6)
That is correct, connect-go
does support "multiplexing".
For example, the API for our schema registry serves the Connect protocol:
curl \
--header 'Content-Type: application/json' \
--data '{"query": "e", "pageSize": 10}' \
https://api.buf.build/buf.alpha.registry.v1alpha1.SearchService/Search
But you can just as well hit the same endpoint with gRPC or gRPC-web clients.
from connect-es.
Hey Alexandros,
connect-go
implements three protocols: gRPC, gRPC-web, and Connect (the protocol).
connect-web
implements two protocols: gRPC-web and Connect.
gRPC-Go
(your backend) implements one protocol: gRPC.
Since your backend is using gRPC-Go
, connect-web
cannot communicate with it out of the box. (The gRPC protocol relies on HTTP trailers, and web browsers do not expose them in userland).
It looks like we need to clarify this in the copy on the homepage. I think this wasn't updated completely when we launched connect-web. Apologies.
There are a couple of options:
- Use a proxy to translate between gRCP and gRPC-web. Envoy is mature and commonly used.
- Switch from
gRPC-Go
toconnect-go
.
Both options maintain gRPC compatibility, while adding support for an additional protocol.
The main difference between the gRPC-web protocol and the Connect protocol is that Connect is more HTTP friendly, can be used with curl
, and uses human-friendly JSON on the wire.
It might be a different story in your case, but for some teams, connect-go
was just what they were waiting for. We're happy to help with more details. We have an active community on slack, in case you are interested.
from connect-es.
Thanks for the reply and clarification, @timostamm!
That makes sense to me. I will run this up the chain of command, and try to get more stakeholders on board, because we're currently using grpc-web/google-protobuf for our React browser app, which is less than ideal. Our goal is to get rid of the grpc-web proxy and connect-go/connect-web seems like the ideal way to do that.
from connect-es.
Followup question: Am I correct in thinking that connect-go implements multiplexing of the various protocols it implements? Ideally we'd like to support, at a minimum, grpc (for our API client customers) and connect (for our own frontend, and presumably any of our users who want to connect via their browser app)
from connect-es.
Closing this, as I think the question is answered. @alexandros-megas, let us know if we can help going forward. We also have an active Slack workspace.
from connect-es.
Closing this, as I think the question is answered. @alexandros-megas, let us know if we can help going forward. We also have an active Slack workspace.
If you connect with us on Slack, we're also happy to chat in detail or arrange a conversation with any internal stakeholders.
from connect-es.
Related Issues (20)
- Content-Type and other HTTP headers missing with gRPC requests when launching in Cypress E2E Test HOT 1
- Remove "node" export condition
- Requests appear aborted before handler over HTTP/1.1 HOT 1
- Support alternate protobuf "runtimes"
- Support override of SSL target name HOT 2
- js_import_style=commonjs still generates 'export const MyService' instead of `exports.MyService` HOT 1
- Grpc-web lose connection after 60s for server-streaming calls HOT 1
- [connect-fastify] issue running in google cloud / firebase functions HOT 2
- Generated service not showing up as type `ServiceType` HOT 3
- [Angular] Example using multiple endpoints HOT 1
- Incorrect typing of Struct.toJson() HOT 1
- Connect serialization should gracefully handle null values HOT 2
- Adding response headers to error responses in interceptor
- Allow keeping original method names HOT 2
- Root interceptors are overwritten when service interceptors are also defined
- Generated code references `.js` when it should reference `.ts` HOT 2
- use ConnectRPC Protobuf with React server actions HOT 9
- Client middleware that adds automatic retries to unary calls with timeouts between retry attempts. HOT 3
- Otel support just like otelconnect-go does HOT 10
- Request-scoped logging HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from connect-es.