【问题标题】:Does the HTTP protocol support detecting whenever the connection is lost from the server side?HTTP 协议是否支持在服务器端连接丢失时进行检测?
【发布时间】:2017-02-14 03:39:54
【问题描述】:

假设我有一个 ASP.NET 应用程序并保持连接 10 秒。在那段时间,客户端失去了网络访问权限。

我可以在返回响应之前检测到吗?

【问题讨论】:

  • 也许吧。也许不吧。这实际上有点复杂。如果客户不再在那里接收它,您大概是想避免做一些工作?
  • 其实,没有。我正在做消息传输,想知道客户端收到了消息。我有一个长轮询的实现。目前我正在通过发送另一个请求确认消息已收到,但这对性能不太友好。并且不能帮助我检测死客户。
  • 如果您想要可靠的消息传递,您将需要应用程序级别的 ACK。您无法可靠地检测到 TCP 连接已消失。

标签: asp.net http


【解决方案1】:

“在 HTTP 中”您无法检测到丢失的连接,因为它是一个应用层协议,对它来说太抽象了。

但您可以检测到您的客户端已在网络级别关闭连接。我不熟悉 ASP.net,但你可以从这里开始:Instantly detect client disconnection from server socket

【讨论】:

    【解决方案2】:

    您可以查看IsClientConnectedProperty。例如

    void HeavyProcessing()
    {
        while (longLoop)
        {
            if (!HttpContext.Current.Response.IsClientConnected) Response.End();
            //Do heavy processing
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 1970-01-01
      • 2021-05-11
      • 2010-10-10
      • 2019-06-03
      • 1970-01-01
      相关资源
      最近更新 更多