H15 по запросу Heroku SSE

У меня есть приложение Node.js на Heroku. Недавно я переключил длинный запрос на использование SSE (EventSource). Хотя он отлично работает и работает на моей машине, я продолжаю получатьError H15 (Idle connection) на мой запрос GET. В описании H15 говорится, что на транзакцию у меня ушло более 55 секунд. Но весь мой запрос не занимает больше 4-5 секунд.

Кроме того, после прочтения описания я возвращаю свой первый байт (просто число) сразу после нажатия на запрос, прежде чем он начнет какую-либо тяжелую работу - и он все еще не работает.

Мой вопрос (ы):

Что мне нужно сделать, чтобы это продолжалось? Параметр заголовка HTTP? Что-то на стороне клиента JS? Как мне избежать H15?Я пытаюсь сделать что-то, что не поддерживается Heroku? Я так не думаю, так как у меня есть другое приложение на Heroku, которое успешно использует EventSource (express-eventsource.herokuapp.comИсходник на github:https://github.com/TravelingTechGuy/express-eventsource)

Как всегда, спасибо за ваше время.

Ответы на вопрос(2)

Решение Вопроса

изменив и переписав мой код, профилировав сеть и т. Д., Наконец, мой друг (без каких-либо знаний Node) предложил идею, которая поставила меня на правильный путь:

Кажется, что это проблема домена, а не проблема кода вообще.
Я установил сопоставление ANAME, и оказалось, что, поскольку Heroku использует 5 разных IP-адресов, сопоставление только с одним из них может испортить вызов SSE. По сути, mydomain.com показал IP-адрес, отличный от mydomain.herokuapp.com - это означает, что сервер попытался вернуть ответ на IP-адрес, отличный от того, который инициировал вызов, поэтому время ожидания истекло.

Я отказался от ANAME в пользу CNAME (в основном, отказавшись от голого mydomain.com в пользу www.mydomain.com), и теперь, похоже, он работает.

Выводы:

Не все это проблема кода - если он хорошо работает в одной среде, а не в другой, это проблема конфигурацииЕсли вы слишком долго боретесь с чем-то, это помогает привнести новый взгляд. Даже не имея предметного опыта, вы получите отличные идеи для новых подходов, которые вы можете попробовать1 и 1 DNS контроль сосет b @ lls. Переезд оттуда
 Traveling Tech Guy05 мар. 2014 г., 00:33
По сути, это означает, что вы не должны использовать «голые» доменные имена, как mydomain.com. В зависимости от вашего контроля DNS (я использую GoDaddy), вы сможете установить поддомен (CNAME) через управление DNS. Смотрите больше здесь:devcenter.heroku.com/articles/custom-domains
 Traveling Tech Guy31 окт. 2012 г., 09:51
Просто короткое обновление: это действительно была проблема домена. Все работает хорошо (хотя медленно - бесплатно Heroku == медленно Heroku :)).
 Uday Reddy04 мар. 2014 г., 07:59
Ах, эта проблема действительно раздражает. Можете ли вы рассказать подробнее о переходе с ANAME на CNAME?

взаимодействие возвращало ошибку websocket в приложении и ошибку h15 на heroku. Я решил эту проблему, изменив URL-адрес корня на «пустой» домен, а затем перенаправив «пустой» домен на сайт www.example.com. Надеюсь, это тоже кому-нибудь поможет. Я также полностью согласен с @TravelingTechGuy на

Не все это проблема кода - если он хорошо работает в одной среде, а не в другой, это проблема конфигурации

 Matt Jensen15 июл. 2018 г., 02:47
Вопрос о SSE, веб-сокеты - это совершенно другая спецификация со своим набором сложностей.

Ваш ответ на вопрос