如果您觉得流星无法处理此负载,则可能不值得将流星用于您的用例。Meteor的前端(Blaze)可以在没有Meteor的情况下在外部使用:https ://github.com/meteor/blaze
我说这是因为 DDP 套接字仍将打开。尽管如此,如果你想保持这种方式,你可以使用 Meteor.call 和 Meteor.setInterval
服务器端
Meteor.methods({
"yourdata" : function(data) {
var somequery = MyCollection.find().fetch()
return somequery
}
});
客户端
Meteor.setInterval(function() {
Meteor.call("yourdata", function(err, result) {
Session.set("results", result);
});
}, 60000 /*1 minute poll*/);
然后在你的助手中
Template.yourTemplate.helpers({
results: function() {
return Session.get("results");
}
});
然后您可以{{#each results}}
像以前一样使用来显示您的数据。
为什么这是一个坏主意
虽然您可以使用上面的代码执行此操作,但如果您选择:
请记住,如果您的数据库没有更改,那么以这种方式使用轮询的开销要比使用普通的 Meteor.publish 差得多,尤其是在您使用 oplog 的情况下。
这是因为您将每分钟查询一次数据库,而使用普通发布方法您不会对数据库进行一次调用(因为没有更改)
这有点像每 20 分钟左右检查一次电子邮件或在手机上使用推送通知。如果您没有收到任何电子邮件,那么每 20 分钟检查一次有点浪费,而且收到推送通知总是会更快。