У меня есть экспресс-сервер, который истекает через 1 минуту после публикации в Cloud Foundry. Локально я могу установить любой тайм-аут, какой захочу. Вероятно, это проблема с Pivotal Cloud Foundry, но я не уверен, какие настройки могут привести к поломке. Вот что я попробовал в коде:
https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_server_settimeout_msecs_callback
https://nodejs.org/dist/latest-v8.x/docs/api/http.html#http_server_timeout
https://github.com/expressjs/timeout
https://github.com/expressjs/express/issues/2174
Тогда просто для удовольствия я поместил их все в свой код, и он все еще истекает через 1 минуту. Вот грубый ответ, который я получаю:
HTTP/1.1 504 GATEWAY_TIMEOUT
Content-Length: 0
Connection: keep-alive
Я думаю, что есть какая-то конфигурация сервера Linux, которую, возможно, мне придется установить. Есть ли на узле что-нибудь, что могло бы жестко ограничить продолжительность соединения? Что заставило бы это послать тот ответ? В моем коде нет ничего, что отправило бы 504 GATEWAY_TIMEOUT
. Локально, когда я устанавливаю 1 минуту, я даже не получаю такой ответ. Я получаю:
Empty reply from server
Это нормально. Любые предложения приветствуются.
-------------------- UPDATE --------------------
GoRouter, о котором говорил Франциско Матео, действительно является проблемой, но согласно поддержке Pivotal:
Чтобы изменить время ожидания на роутере, вам нужно изменить манифест BOSH роутера. В полной среде Pivotal Cloud Foundry это тривиальное изменение. Однако мы не разрешаем вносить такие изменения в Pivotal Web Services, поскольку они затронут более одного клиента.
Очевидно, что невозможно перегрузить его, но я могу сохранить соединение, если время от времени отправляю данные. Поэтому, если я отправляю пустое место каждые 10 секунд, я могу поддерживать связь вечно. Это ужасно, хотя. В ответе будет множество пустых мест, а затем будут показаны данные.
Следующий вопрос:
Можно ли отправить пинг без данных?
Я попытался отправить пустую строку, но Go Router видит, что это ничего не отправляет. Может быть, пустой символ?