假设我有一个显示城市及其温度的小型流星应用程序。这些城市保存在数据库中。
我想要一个服务器非阻塞过程,它会定期拉动网页并解析温度,例如每小时一次,以更新数据库中的值。
我假设一旦新值更新,所有连接的用户都会看到更新后的温度,甚至无需刷新页面。
我如何以流星初学者的身份实现这一目标。这个过程应该独立于用户,它应该每小时运行一次,无论页面上是否有用户。
谢谢!
答案 0 :(得分:3)
使用percolate:synced-cron包创建一个cron作业。在服务器上运行。它可以安排使用momentjs以任何周期运行。
答案 1 :(得分:1)
我个人使用meteor-job-collection来执行此操作。我刚刚从我的项目中提取了一些代码,这将为您提供一个良好的起点。只需在服务器代码中包含此文件,然后将解析代码添加到作业中:
const parse_RATE = 1000 * 60 * 60;
const parseQueue = JobCollection('parseQueue');
parseQueue.processJobs('parse', { pollInterval: parse_RATE }, function(job, cb) {
// Parse your web page
<add your code here>
// Signal that the job's done
job.done();
// Since .done() will create a new repeating job, we can now delete
// this old job so that we don't fill up the database with dead ones.
job.remove();
cb();
});
// Remove any old jobs that were set up when the server was last running
const oldJobs = parseQueue.find();
oldJobs.forEach((job) => {
parseQueue.cancelJobs([job._id]);
parseQueue.removeJobs([job._id]);
});
// Create a new parse job
//
// We parse at 4am every day when the server is the least busy.
parseQueue.startJobServer();
const job = new Job(parseQueue, 'parse', {});
job.priority('normal')
.repeat({ schedule: parseQueue.later.parse.recur().every(1).hour() })
.save();
答案 2 :(得分:0)
您还可以使用我的新Steve Jobs软件包。对流星的做事方式非常友好。