Как избежать тайм-аута соединения, когда сервер отправляет ответ с опозданием?

#java #sockets #http #curl #router

#java #сокеты #http #curl #маршрутизатор

Вопрос:

Я создал сервер, который выполняет некоторое действие (запускает несколько скриптов), которое занимает около 10 секунд, а затем отправляет ответ клиенту.

Когда я вызываю curl с того же сервера, используя

 curl http://localhost/get-me-status
  

У меня это работает должным образом, но когда я делаю

 $ curl http://server/get-me-status
curl: (56) Recv failure: Connection reset by peer
  

В настоящее время мой сервер не отправляет никакого ответа клиенту примерно в течение 10 секунд, пока действие на его стороне не будет завершено. Как мне поддерживать сокет в рабочем состоянии, пока клиент не получит ответ? В настоящее время мой сервер работает на Java, и я использую vertx на стороне сервера.

У меня сложилось впечатление, что один из промежуточных маршрутизаторов прерывает соединение, увидев, что соединение простаивает несколько секунд, поскольку оно работает нормально, когда клиент также находится на том же компьютере. Есть ли какой-либо способ продолжать отправлять noob или любые другие сообщения клиенту, чтобы поддерживать соединение в рабочем состоянии?

Я сталкиваюсь с этой проблемой, даже когда выполняю http-запрос из браузера.

Комментарии:

1. у curl есть опция тайм-аута: вы можете использовать -m <секунд> , прочитайте этот пост

Ответ №1:

Почему бы просто не использовать Tomcat для обработки этого за вас.

Комментарии:

1. Я никогда не использовал tomcat. Решает ли проблему использование tomcat?

Ответ №2:

Вы должны увеличить тайм-аут клиентского соединения. В curl задайте параметры --connect-timeout и --max-time .