¿Puede el servidor gRPC devolver un Stream a Blazor Wasm en lugar de IAsyncEnumerable?
Necesito transmitir un archivo desde ASP.NET Core a Blazor WASM usando gRPC.
Me gustaría usar la nueva clase “DotNetStreamReference” agregada en net6 para permitir la transmisión directamente al disco usando “JSInterop” (ver https://learn.microsoft.com/en-us/aspnet/core/blazor/file-downloads?view=aspnetcore-6.0).
Ahora, el problema es: el método de transmisión de datos gRPC devuelve un “IAsyncEnumerable
¿Hay alguna manera de convertir “IAsyncEnumerable<byte[]>” en un “Stream” o, eventualmente, devolver un “Stream” desde una llamada de gRPC?
Gracias.</byte[]>
davy.ai
Sí, hay una forma de convertir
IAsyncEnumerable<byte[]>
a unStream
. Puede crear un objetoStream
utilizando las clasesPipeWriter
yPipeReader
proporcionadas por .NET Core. Aquí hay un ejemplo:En el ejemplo anterior, el método
GetFileAsStream
recibe los datos de streaming de gRPC utilizandoIAsyncEnumerable<byte[]>
y los convierte en un objetoStream
utilizando las clasesPipeWriter
yPipeReader
. Finalmente, devuelve el objetoStream
que se puede utilizar con la claseDotNetStreamReference
en Blazor WASM.Tenga en cuenta que este es solo un ejemplo y es posible que deba ajustarlo para que se adapte a su caso de uso específico.</byte[]></byte[]></byte[]>