关于Heroku SSE请求的H15

时间:2012-10-25 07:31:17

标签: node.js heroku server-sent-events

我在Heroku上有一个Node.js应用程序。我最近切换了一个长查询来使用SSE(EventSource)。虽然它在我的机器上工作得很好而且速度很快,但我仍然在我的GET请求上获得Error H15 (Idle connection)。 H15描述说我每笔交易允许超过55秒。但我的整个查询不会超过4-5秒。

此外,在阅读完描述后,我会在点击查询后立即返回我的第一个字节(只是一个数字),然后才开始繁重的工作 - 而且它仍然不起作用。

我的问题是:

  1. 为了让这件事继续下去,我需要做些什么? HTTP标头参数?客户端JS方面的东西?我该如何避免使用H15?
  2. 我是否尝试做Heroku不支持的事情?我不这么认为,因为我在Heroku上有另一个成功使用EventSource的应用程序(express-eventsource.herokuapp.com,github上的源代码:https://github.com/TravelingTechGuy/express-eventsource
  3. 一如既往,谢谢你的时间。

3 个答案:

答案 0 :(得分:12)

在尝试了所有内容,更改并重新编写代码,分析网络等之后,最后我的朋友(没有任何Node知识)提出了一个让我走上正轨的想法:

这似乎是一个域名问题 - 根本不是代码问题 我设置了一个ANAME映射,事实证明,由于Heroku使用5个不同的IP,映射到其中一个IP可能会搞砸SSE呼叫。基本上,mydomain.com显示的IP与mydomain.herokuapp.com不同 - 这意味着服务器尝试将响应返回到与发起呼叫的IP不同的IP,因此它超时。

我放弃了ANAME,转而支持CNAME(基本上,放弃裸体mydomain.com,转而支持www.mydomain.com),现在它似乎正在发挥作用。

结论:

  1. 并非一切都是代码问题 - 如果它在一个环境中运行良好而在另一个环境中运行良好,那么这是一个配置问题
  2. 如果你长时间挣扎,有助于带来一双新的眼睛。即使没有主题专业知识,您也可以通过新的方法获得很好的想法
  3. 1和1 DNS控制糟透了b @ lls。离开那里

答案 1 :(得分:1)

我遇到了与Meteor应用程序相同的问题。突然之间,每次交互都会在应用程序上返回websocket错误,并在heroku上返回h15错误。我已经通过将根URL更改为裸域来解决它,然后将裸域转发到www.example.com。希望这也会对某人有所帮助。 我也完全同意@TravelingTechGuy

  

并非一切都是代码问题 - 如果它在一个环境中运行良好而在另一个环境中运行良好,那么这是一个配置问题

答案 2 :(得分:0)

这有时可能是因为数据库的原因。如果数据库没有连接,这个错误很可能是可见的!