Akka-http определяет, закрыто ли клиентское соединение - PullRequest
2 голосов
/ 27 сентября 2019

У меня есть вопрос.

У меня есть Akka HTTP Server и я использую Akka HTTP Client.Клиент делает много внешних вызовов в основном с помощью Http.singleRequest ().Это занимает много времени, и иногда Пользователь закрывает соединение с моим Сервером.

Итак, вопрос - как я могу определить, что пользователь закрыл соединение?

server.scala:

val requestHandler: HttpRequest => HttpResponse = {
      case HttpRequest(HttpMethods.GET, Uri.Path("/"), _, _, _) =>
        Thread.sleep(5000)
        println("reply")
        HttpResponse(entity = HttpEntity(
          ContentTypes.`text/html(UTF-8)`,
          "Ok"))
    }    

val serverBinding: Future[Http.ServerBinding] = Http().bind(host, port)
      .via(reactToTopLevelFailures)
      .to(Sink.foreach { connection: IncomingConnection =>
        println("Accepted new connection from " + connection.remoteAddress)
        connection.handleWith(Flow[HttpRequest] map requestHandler)
      })
      .run()

Вы можете просто сделать запрос через cURL и отменить его немедленно, вы все равно увидите «ответить» в консоли.

Спасибо

...