如何在 .Net Core 中使用 Grpc 检索流媒体结果?
How do I retrieve streaming results using Grpc in .Net Core?
我正在使用 gRPC 构建 .NetCore 应用程序。
我在构建处理流媒体结果的代码时遇到问题。
考虑以下 protobuf 定义:
service SampleService
{
rpc RegisterClient(G_ClientRequest) returns (stream G_ClientResponse) { }
}
这是从流中读取结果的代码片段:
public ConnectToClient()
{
var results = Client.RegisterClient(new G_ClientRequest()
{
ClientName = "Foo",
DateTimeStamp = new Google.Protobuf.WellKnownTypes.Timestamp()
});
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
foreach (var result in results.ResponseStream.ReadAllAsync(cancellationToken: cts.Token))
{
}
}
我一直在谷歌搜索,发现了一些类似于我上面处理流媒体结果的代码。但是代码无法编译。
ReadAllAsync() 在 IAsyncStreamReader.
的接口定义中不可用
.Net Core 中没有此功能 available/supported 吗?我使用的是最新稳定版 Grpc (2.38)。
如果这对我不可用,我如何从 .Net Core 中的 ResponseStream 检索结果?
谢谢,JohnB
根据 gRPC 文档,接口 IAsyncStreamReader 没有 ReadAllAsync() 方法。
https://grpc.github.io/grpc/csharp/api/Grpc.Core.IAsyncStreamReader-1.html
ReadAllAsync 是 Grpc.Core 中包含的扩展,如果您安装了 Nuget 包 Grpc.Net.Client 只需添加:
using Grpc.Core;
我正在使用 gRPC 构建 .NetCore 应用程序。
我在构建处理流媒体结果的代码时遇到问题。
考虑以下 protobuf 定义:
service SampleService
{
rpc RegisterClient(G_ClientRequest) returns (stream G_ClientResponse) { }
}
这是从流中读取结果的代码片段:
public ConnectToClient()
{
var results = Client.RegisterClient(new G_ClientRequest()
{
ClientName = "Foo",
DateTimeStamp = new Google.Protobuf.WellKnownTypes.Timestamp()
});
var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
foreach (var result in results.ResponseStream.ReadAllAsync(cancellationToken: cts.Token))
{
}
}
我一直在谷歌搜索,发现了一些类似于我上面处理流媒体结果的代码。但是代码无法编译。 ReadAllAsync() 在 IAsyncStreamReader.
的接口定义中不可用.Net Core 中没有此功能 available/supported 吗?我使用的是最新稳定版 Grpc (2.38)。
如果这对我不可用,我如何从 .Net Core 中的 ResponseStream 检索结果?
谢谢,JohnB
根据 gRPC 文档,接口 IAsyncStreamReader 没有 ReadAllAsync() 方法。
https://grpc.github.io/grpc/csharp/api/Grpc.Core.IAsyncStreamReader-1.html
ReadAllAsync 是 Grpc.Core 中包含的扩展,如果您安装了 Nuget 包 Grpc.Net.Client 只需添加:
using Grpc.Core;