Sobes.tech
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.