1

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

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;
}

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

4

1 回答 1

0

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

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

为每个请求生成一个新连接,然后确保将响应写入该连接。因此,查看 Microsoft 的侦听器示例代码,每当listener.AcceptConnectionAsync()火灾对 进行所有消息响应时relayConnection,然后返回等待await listener.AcceptConnectionAsync();

while (true)
{
     var relayConnection = await listener.AcceptConnectionAsync();
     if (relayConnection == null)
     {
         break;
     }

     ProcessMessagesOnConnection(relayConnection, cts);
}
于 2018-04-23T17:36:50.077 回答