C# Azure中继混合连接-如何发送同步请求/响应

C# Azure中继混合连接-如何发送同步请求/响应,c#,azure,azure-servicebusrelay,azure-hybrid-connections,C#,Azure,Azure Servicebusrelay,Azure Hybrid Connections,我使用混合连接从侦听器请求数据。如果我可以写入和读取连接,我怎么知道从连接读取的响应与我给出的请求匹配?例如: private HybridConnectionClient _client = new HybridConnectionClient(***); public override async Task<RelayResponse> SendAsync(RelayRequest request) { var stream = await _client.Create

我使用混合连接从侦听器请求数据。如果我可以写入和读取连接,我怎么知道从连接读取的响应与我给出的请求匹配?例如:

private HybridConnectionClient _client = new HybridConnectionClient(***);

public override async Task<RelayResponse> SendAsync(RelayRequest request)
{
    var stream = await _client.CreateConnectionAsync();
    var writer = new StreamWriter(stream) { AutoFlush = true };
    var reader = new StreamReader(stream);

    var reqestSerialized = JsonConvert.SerializeObject(request);

    await writer.WriteLineAsync(reqestSerialized);

    string responseSerialized = await reader.ReadLineAsync();
    var response = JsonConvert.DeserializeObject<RelayResponse>(responseSerialized);

    return response;
}
private HybridConnectionClient\u client=new HybridConnectionClient(***);
公共覆盖异步任务SendAsync(RelayRequest请求)
{
var stream=await_client.CreateConnectionAsync();
var writer=newstreamwriter(stream){AutoFlush=true};
变量读取器=新的流读取器(流);
var requestserialized=JsonConvert.serialized对象(请求);
等待writer.WriteLineAsync(RequestSerialized);
string responseSerialized=Wait reader.ReadLineAsync();
var response=JsonConvert.DeserializeObject(responseSerialized);
返回响应;
}

如果此连接上的侦听器同时读取和响应多个请求,是否需要知道我们在客户端获取响应的下一个Readline()是与请求关联的?或者这是必须管理的吗?

了解更多关于azure中继混合连接的信息,我现在明白了

框架中实际上没有任何同步请求/响应的概念,但是如果您对每个请求使用新连接,并在侦听器中对同一连接进行响应,则可以确保响应是针对您发送的请求的

为每个请求生成一个新连接,然后确保将响应写入该连接。因此,看看微软的侦听器示例代码,每当
listener.AcceptConnectionAsync()
relayConnection
上触发所有消息响应,然后返回到等待侦听器.AcceptConnectionAsync()


这取决于要管理的框架,它应该是开箱即用的。你面临什么问题?
while (true)
{
     var relayConnection = await listener.AcceptConnectionAsync();
     if (relayConnection == null)
     {
         break;
     }

     ProcessMessagesOnConnection(relayConnection, cts);
}