Junior — Middle
Vysvetlite koncept obojsmerného prúdenia dát v gRPC.
sobes.tech AI
Odpoveď od AI
Dvojstranné streamovanie dát (bidirectional streaming) v gRPC umožňuje klientovi a serveru súčasne odosielať a prijímať toky správ v rámci jedného spojenia.
To znamená, že obe strany môžu nezávisle a paralelne prenášať dáta, čo je užitočné pre scenáre s interaktívnou výmenou, ako je chat, streamovanie aktualizácií dát alebo obojsmerná komunikácia v reálnom čase.
V C# sa to realizuje pomocou asynchrónnych metód, ktoré vracajú objekt AsyncDuplexStreamingCall<TRequest, TResponse>. Klient aj server môžu čítať a písať správy v toku asynchrónne.
Príklad použitia na strane servera:
public override async Task Chat(
IAsyncStreamReader<ChatMessage> requestStream,
IServerStreamWriter<ChatMessage> responseStream,
ServerCallContext context)
{
await foreach (var message in requestStream.ReadAllAsync())
{
Console.WriteLine($"Prijaté: {message.Text}");
await responseStream.WriteAsync(new ChatMessage { Text = "Odozva: " + message.Text });
}
}
Tu server číta správy od klienta a okamžite odosiela odpoveď, udržiavajúc obojsmerný tok dát.