meteor – 连接超时。 没有收到心跳

我得到以下错误:

连接超时。 没有收到心跳。

当访问我的meteor应用程序( http://127.0.0.1:3000 )。 该应用程序已被移动到一个新的电脑与相同的代码库 – 服务器运行良好,没有错误,我可以访问mongodb。 什么会导致上述错误?

这个问题似乎发生在收集更大的时候。 但是我有它在另一台计算机上运行瞬间加载集合。 与袜子的连接花费了一分钟,并且在最终失败之前变大:

在这里输入图像描述在这里输入图像描述

meteor的DDP实现了用于长轮询的Sockjs的心跳。 这可能是由于DDP Heartbeat的超时默认值为15秒。 如果你访问了大量的数据,并且花费了大量的时间,在你的情况下,1分钟,DDP会在被操作阻塞足够长的时间后超时,以防止连接被代理closures(这可能会更糟糕),然后尝试再次重新连接。 这可以永远持续下去,你可能永远不会完成这个过程。

在DDPclosures连接之前,您可以尝试在短时间内假设断开连接并重新连接,并将数据库访问划分为更短的连续进程,您可以在每次迭代中检索并查看问题是否存在:

 // while cursorCount <= data { Meteor.onConnection(dbOp); Meteor.setTimeout(this.disconnect, 1500); // Adjust timeout here Meteor.reconnect(); cursorCount++; } func dbOp(cursorCount) { // database operation here // pick up the operation at cursorCount where last .disconnect() left off } 

但是,断开连接时,所有的实时更新也将停止,但明确重新连接可能会弥补较小的阻塞。

在Google组和Meteor Hackpad上查看关于这个问题的讨论