Как сделать постоянное соединение HTTP с помощью Spray-Client
Я пытаюсь запросить постоянное HTTP-соединение, используя библиотеку Scala Spray-client, так что клиент должен установить соединение один раз, а затем он может сделать несколько звонков на одном и том же соединении.
Я не могу найти какую-либо информацию для этого на странице документации Spray
1 ответ
Я думаю, что по умолчанию клиент спрей будет использовать соединения, где это возможно.
По умолчанию соединения, которые не используются в течение 60 секунд, будут разорваны клиентом.
# The time after which an idle connection will be automatically closed.
# Set to `infinite` to completely disable idle timeouts.
spray.client.idle-timeout = infinite
Если мы отключим тайм-ауты простоя, наши подключения будут оставаться активными вечно, если только удаленный сервер не настроен на уничтожение простоя через некоторое время (возможно, это так, но клиент спрей должен убедиться, что мы всегда можем получить новое соединение, соблюдая ограничение, указанное ниже).
Мы можем ограничить размер пула коннекторов хоста до 1, чтобы получить желаемое поведение (одно соединение на хост):
# The maximum number of parallel connections that an `HttpHostConnector`
# is allowed to establish to a host. Must be greater than zero.
spray.can.host-connector.max-connections = 1
Это будет означать, что если мы отправим второй запрос до того, как наш первый запрос получит ответ, второй не будет отправлен, пока первый не будет завершен. Чтобы отправить несколько запросов по одному соединению, не дожидаясь первого завершения, мы можем включить конвейерную обработку.
# If this setting is enabled, the `HttpHostConnector` pipelines requests
# across connections, otherwise only one single request can be "open"
# on a particular HTTP connection.
spray.can.host-connector.pipelining = off