ASP.NET Core |如何使本地网络gRPC客户端池

问题描述 投票:0回答:1

我正在尝试构建一个由1个主服务器和至少2个gRPC服务(使用HTTP.Sys托管)组成的系统,这些服务既可以是主服务器的客户端,又可以接受来自主服务器的连接,以下称为< [“工人”。系统的每个元素都在本地网络内部。辅助服务器一旦开始连接到主服务器,主服务器应将连接添加到池中,以后可以在其中访问客户端辅助服务器以进行gRPC调用。我期望如何在下面运行的示例

public class MainServer : MainServer.MainServerGrpcBase { public List<GrpcChannel> ChannelPool { get; set; } public MainServer() { ChannelPool = new List<GrpcChannel>(); } public override async Task<Confirmation> Connect(ConnectionRequest request, ServerCallContext context) { ChannelPool.Add(context.Channel); return new Confirmation { Success = true; } } // Having a channel pool allows me using methods like this. public void BroadcastMessage(string message) { foreach(var channel in ChannelPool) { var client = new Worker.WorkerClient(channel); client.SendMessage(message); } } }

我尝试过的事情:

    确定客户端的工作人员IP并将其发送到主服务器,然后使用GrpcChannel.FromAddress(...)创建通道,结果我发现无法获取合适的工作人员地址来创建通道。
  • ServerCallContext.Peer创建通道,该属性返回不适合创建通道的奇怪IPv6地址。
  • TLDR;

  • 我需要一个gRPC服务器,该服务器能够存储客户端gRPC服务以供进一步使用,例如广播消息。
    c# asp.net-core connection-pooling grpc
    1个回答
    0
    投票
    如果我正确理解了您的问题,则在您已经处理了从客户端到服务器的请求之后,您尝试将邮件从服务器发送到客户端。这是不可能的,因为HTTP允许将请求从客户端发送到服务器,而不是相反。由于gRPC使用HTTP / 2,因此您需要使用另一种方法来解决您的问题。
    © www.soinside.com 2019 - 2024. All rights reserved.