Streaming-RPC'er: Server, klient og tovejs
Gå videre end unære kald, og lær gRPC's tre streamingtilstande til at sende sekvenser af meddelelser over ét enkelt kald.
Streaming-RPC'er: Server, klient og tovejs er en gratis gRPC og højtydende API'er-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i gRPC og højtydende API'er, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.
Ud over unary
En unary RPC er én anmodning og ét svar. Men mange problemer kræver en række meddelelser — feeds, uploads og chat.
gRPC tilbyder tre streamingtilstande, der bygger på HTTP/2-strømme.
De fire metodeformer
I en .proto-tjeneste kan du erklære:
- Unary: én ind, én ud.
- Serverstreaming: én ind, mange ud.
- Klientstreaming: mange ind, én ud.
- Tovejs: mange ind, mange ud.
Erklæring af strømme i Proto
Nøgleordet stream markerer en parameter som en strøm.
service Feed {
rpc Watch (WatchRequest) returns (stream Event);
rpc Upload (stream Chunk) returns (UploadResult);
rpc Chat (stream Message) returns (stream Message);
}Serverstreaming
Klienten sender én anmodning, og serveren svarer med mange meddelelser, indtil den lukker strømmen.
Velegnet til: livefeeds, store resultatsæt og statusopdateringer.
// Server side (Go-style pseudocode)
func (s *server) Watch(req *WatchRequest, stream Feed_WatchServer) error {
for _, e := range events {
stream.Send(e)
}
return nil
}Klientstreaming
Klienten sender mange meddelelser, hvorefter serveren returnerer ét svar.
Velegnet til: filuploads, batchindlæsning og aggregeringer.
// 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{})
}
}
}Tovejsstreaming
Begge sider sender strømme uafhængigt af hinanden over det samme kald. Meddelelser kan frit flettes ind mellem hinanden.
Velegnet til: chat, samarbejde i realtid og interaktive protokoller.
Hvorfor det er effektivt
Alle fire former bruger én enkelt HTTP/2-strøm — der oprettes ikke en ny forbindelse for hver meddelelse.
Multipleksing betyder, at mange streamingkald deler én forbindelse uden blokering forrest i køen.
Flowkontrol
HTTP/2 har indbygget flowkontrol, så en langsom læser automatisk lægger modtryk på en hurtig skriver.
Det forhindrer en streamingserver i at overbelaste en klient, der ikke kan følge med.
Afslutning af en strøm
Strømme lukkes eksplicit:
- Serverstreaming slutter, når serveren returnerer.
- Klientstreaming slutter, når klienten signalerer slutningen på strømmen, og serveren svarer.
- Tovejsstreaming slutter, når begge halvdele er færdige, eller når der opstår en fejl eller annullering.
Fejl og annullering
Begge sider kan annullere eller mislykkes midt i en strøm. Modparten modtager en statuskode og bør rydde op.
Håndtér altid EOF og fejlreturneringer fra Recv() / Send() for at undgå lækager.
Valg af tilstand
Vælg ud fra dataformen:
- Engangsanmodning og -svar: unary.
- Send mange resultater: serverstreaming.
- Send mange, og få en opsummering: klientstreaming.
- Kontinuerlig kommunikation i begge retninger: tovejsstreaming.
Hurtig kontrol
Test din forståelse af streaming-RPC'er.
Opsummering
Du har lært om gRPC's streamingtilstande.
- Unary, serverstreaming, klientstreaming og tovejsstreaming.
- Markér strømme med nøgleordet
streami proto. - Alle bruger én enkelt multiplekset HTTP/2-strøm med indbygget flowkontrol.
- Vælg den tilstand, der passer til dine datas form.
Lær gRPC og højtydende API'er med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 48
Ofte stillede spørgsmål
Er lektionen “Streaming-RPC'er: Server, klient og tovejs” gratis?
Ja — hele teksten til “Streaming-RPC'er: Server, klient og tovejs” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af gRPC og højtydende API'er-kurset, skal du opgradere til CoddyKit PRO. gRPC og højtydende API'er-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Streaming-RPC'er: Server, klient og tovejs”?
Gå videre end unære kald, og lær gRPC's tre streamingtilstande til at sende sekvenser af meddelelser over ét enkelt kald. Du øver dig i gRPC og højtydende API'er med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på gRPC og højtydende API'er?
Der kræves ingen tidligere erfaring. gRPC og højtydende API'er på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Streaming-RPC'er: Server, klient og tovejs”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne gRPC og højtydende API'er-lektion?
Ja. Alle gRPC og højtydende API'er-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Definition af Protobuf-skemaer
- Generering af gRPC-kode
- En simpel unary gRPC-service
- Streaming-RPC'er: Server, klient og tovejs