我正在尝试构建一个由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);
}
}
}
我尝试过的事情:
GrpcChannel.FromAddress(...)
创建通道,结果我发现无法获取合适的工作人员地址来创建通道。ServerCallContext.Peer
创建通道,该属性返回不适合创建通道的奇怪IPv6地址。TLDR;