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上查看关于这个问题的讨论
- 将二进制数据从Nodejs缓冲区写入Meteor客户端的blob
- 使用meteor与Adobe Flash CreateJS工具包
- 给Derby.js或Meteor一个用于authentication生产的应用程序是否已经是值得的了?
- 如何处理meteor.js中的条件文件下载
- 比document.write()更好的实践来加载网站中的外国内容?
- 如何在Meteor的服务器端debugging并logging自己的代码?
- Python可以写入数据库,而Meteor可以被动更新
- 如何通过对象名称获取全局对象
- 有没有可能有一个IRC客户端使用运行你自己的IRC服务器没有websockets网关的websockets?