H15 à la demande de Heroku SSE

J’ai une application Node.js sur Heroku. J’ai récemment passé une longue requête à utiliser SSE (EventSource). Bien que cela fonctionne bien et rapidement sur ma machine, je continue à avoir une Error H15 (Idle connection) sur ma demande GET. La description H15 indique que j’ai dépassé les 55 secondes autorisées par transaction. Mais toute ma requête ne prend pas plus de 4-5 secondes.

De plus, après avoir lu la description, je retourne mon premier octet (juste un nombre) immédiatement après avoir répondu à la requête, avant qu’il ne commence un travail difficile – et cela ne fonctionne toujours pas.

Ma question / s sont:

  1. Que dois-je faire pour que cela continue? Un paramètre d’en-tête HTTP? Quelque chose du côté du client JS? Comment puis-je éviter H15?
  2. Est-ce que j’essaie de faire quelque chose qui n’est pas soutenu par Heroku? Je ne pense pas, car j’ai une autre application sur Heroku qui utilise EventSource avec succès ( express-eventsource.herokuapp.com , source sur github: https://github.com/TravelingTechGuy/express-eventsource ).

Comme toujours, merci pour votre temps.

Après avoir tout essayé, modifié et réécrit mon code, profilé le réseau, etc., enfin, mon ami (sans aucune connaissance de Node) a eu une idée qui m’a mis sur la bonne voie:

Il semble que ce soit un problème de domaine – PAS un problème de code.
J’ai défini un mappage ANAME et il s’avère que, puisque Heroku utilise 5 adresses IP différentes, le mappage sur un seul d’entre eux peut gâcher un appel SSE. Fondamentalement, mydomain.com a affiché une adresse IP différente de celle de mydomain.herokuapp.com, ce qui signifie que le serveur a tenté de renvoyer une réponse à une adresse IP différente de celle qui a initié l’appel.

J’ai abandonné l’ANAME en faveur d’un CNAME (en gros, abandonnant le mydomain.com nu au profit de http://www.mondomain.com) et maintenant, il semble fonctionner.

Conclusions:

  1. Tout n’est pas un problème de code – si cela fonctionne bien dans un environnement et pas dans un autre, c’est un problème de configuration
  2. Si vous luttez avec quelque chose pendant trop longtemps, il est utile d’attirer un nouvel œil. Même sans aucune expertise en la matière, vous aurez d’excellentes idées de nouvelles approches que vous pourrez essayer.
  3. Le contrôle DNS 1and1 est nul b @ lls. Sortir de là

J’ai rencontré le même problème avec une application Meteor. Tout à coup, chaque interaction renvoyait une erreur websocket sur l’application et une erreur h15 sur le heroku. Je l’ai résolu en changeant l’URL racine en un domaine nu, puis en transférant le domaine nu à http://www.example.com. J’espère que cela aiderait aussi quelqu’un. Je suis également totalement d’accord avec @TravelingTechGuy sur

Tout n’est pas un problème de code – si cela fonctionne bien dans un environnement et pas dans un autre, c’est un problème de configuration