Streaming-RPCs: Server, Client & bidirektional
Gehen Sie über unäre Aufrufe hinaus und lernen Sie die drei Streaming-Modi von gRPC kennen, mit denen sich Nachrichtenfolgen über einen einzigen Aufruf senden lassen.
Streaming-RPCs: Server, Client & bidirektional ist eine kostenlose gRPC & High Performance APIs-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des gRPC & High Performance APIs-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der gRPC & High Performance APIs-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Beyond Unary
A unary RPC is one request, one response. But many problems need a sequence of messages — feeds, uploads, chat.
gRPC offers three streaming modes built on HTTP/2 streams.
The Four Method Shapes
In a .proto service you can declare:
- Unary: one in, one out.
- Server streaming: one in, many out.
- Client streaming: many in, one out.
- Bidirectional: many in, many out.
Declaring Streams in Proto
The stream keyword marks a parameter as a stream.
service Feed {
rpc Watch (WatchRequest) returns (stream Event);
rpc Upload (stream Chunk) returns (UploadResult);
rpc Chat (stream Message) returns (stream Message);
}Server Streaming
The client sends one request; the server replies with many messages until it closes the stream.
Great for: live feeds, large result sets, progress updates.
// Server side (Go-style pseudocode)
func (s *server) Watch(req *WatchRequest, stream Feed_WatchServer) error {
for _, e := range events {
stream.Send(e)
}
return nil
}Client Streaming
The client sends many messages, then the server returns a single response.
Great for: file uploads, batched ingestion, aggregations.
// Server reads the whole client stream, then replies once
func (s *server) Upload(stream Feed_UploadServer) error {
for {
chunk, err := stream.Recv()
if err == io.EOF {
return stream.SendAndClose(&UploadResult{})
}
}
}Bidirectional Streaming
Both sides send streams independently over the same call. Messages can interleave freely.
Great for: chat, real-time collaboration, interactive protocols.
Why It's Efficient
All four shapes ride a single HTTP/2 stream — no new connection per message.
Multiplexing means many streaming calls share one connection without head-of-line blocking.
Flow Control
HTTP/2 provides built-in flow control, so a slow reader naturally backpressures a fast writer.
This prevents a streaming server from overwhelming a client that can't keep up.
Ending a Stream
Streams close explicitly:
- Server streaming ends when the server returns.
- Client streaming ends when the client signals end-of-stream and the server replies.
- Bidirectional ends when both halves complete or an error/cancel occurs.
Errors & Cancellation
Either side can cancel or fail mid-stream. The peer receives a status code and should clean up.
Always handle EOF and error returns from Recv() / Send() to avoid leaks.
Choosing a Mode
Pick by data shape:
- One-shot request/response: unary.
- Push many results: server streaming.
- Send many, get a summary: client streaming.
- Continuous two-way: bidirectional.
Quick Check
Test your understanding of streaming RPCs.
Recap
You learned gRPC's streaming modes.
- Unary, server streaming, client streaming, and bidirectional.
- Mark streams with the
streamkeyword in proto. - All ride a single multiplexed HTTP/2 stream with built-in flow control.
- Choose the mode that matches your data's shape.
Häufig gestellte Fragen
Ist die Lektion „Streaming-RPCs: Server, Client & bidirektional“ kostenlos?
Ja — der vollständige Text von „Streaming-RPCs: Server, Client & bidirektional“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des gRPC & High Performance APIs-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der gRPC & High Performance APIs-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Streaming-RPCs: Server, Client & bidirektional“?
Gehen Sie über unäre Aufrufe hinaus und lernen Sie die drei Streaming-Modi von gRPC kennen, mit denen sich Nachrichtenfolgen über einen einzigen Aufruf senden lassen. Du übst gRPC & High Performance APIs mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um gRPC & High Performance APIs zu starten?
Keine Vorkenntnisse erforderlich. gRPC & High Performance APIs auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Streaming-RPCs: Server, Client & bidirektional“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser gRPC & High Performance APIs-Lektion Code schreiben und ausführen?
Ja. Jede gRPC & High Performance APIs-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Protobuf-Schemadefinition
- gRPC-Code generieren
- Einfacher unärer gRPC-Service
- Streaming-RPCs: Server, Client & bidirektional