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

标签 c# azure azure-servicebusrelay azure-hybrid-connections

我正在使用混合连接从监听器请求数据。如果我可以对连接进行写入和读取,我如何知道从连接读取的响应与我给出的请求相匹配?例如:

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() 是与要求?或者这是必须管理的事情?

最佳答案

进一步了解 azure 中继混合连接,我现在明白了。

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

为每个请求生成一个新连接,然后确保将响应写入该连接。因此,查看 Microsoft 的监听器示例代码,每当 listener.AcceptConnectionAsync() 触发时,都会在 relayConnection 上执行所有消息响应,然后返回等待 await Listener.AcceptConnectionAsync ();

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

     ProcessMessagesOnConnection(relayConnection, cts);
}

关于c# - Azure 中继混合连接 - 如何发送同步请求/响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49979746/

相关文章:

c# - 当涉及到 MessageBox 时,String.Format() 的对齐方式表现不同

c# - 如何声明要由泛型类型使用的枚举?

azure - 如何使用 Azure CLI cmdlet 强制删除所有资源组而不提示确认?

azure - azure 服务总线中继的断开连接问题

c# - 使用 iTextSharp.dll 将 HTML 转换为 PDF

azure - 如何使用 Azure CLI 获取存储帐户的 blob 列表?

azure - 在azure ARM模板中获取VM的IP地址

c# - 适用于 Soap Web 服务的 Azure 中继

c# - 服务总线 WCF 中继 "An error occurred while transmitting data."

c# - 如何使用 Windows 添加到我的 c# Selenium Webdriver 套件以合并 native iPhone 应用程序测试