【发布时间】:2016-02-22 20:30:40
【问题描述】:
当用户收到热码推送时,如何让他们知道?
此时在推送过程中会出现黑屏,用户会觉得很奇怪。我想向他们保证应用正在更新。
有没有可以用的钩子之类的东西?
【问题讨论】:
-
看看this 论坛主题 - 特别是this video 和this package。
标签: meteor
当用户收到热码推送时,如何让他们知道?
此时在推送过程中会出现黑屏,用户会觉得很奇怪。我想向他们保证应用正在更新。
有没有可以用的钩子之类的东西?
【问题讨论】:
标签: meteor
这是迄今为止我发现的不需要外部包的最短解决方案:
var ALERT_DELAY = 3000;
var needToShowAlert = true;
Reload._onMigrate(function (retry) {
if (needToShowAlert) {
console.log('going to reload in 3 seconds...');
needToShowAlert = false;
_.delay(retry, ALERT_DELAY);
return [false];
} else {
return [true];
}
});
您可以将其复制到应用的客户端代码中并更改两件事:
将console.log 替换为警报模式或通知用户屏幕即将重新加载的内容。
将 ALERT_DELAY 替换为您认为适合用户从 (1) 读取模式的毫秒数。
我建议在 Evented Mind 上观看 this video,它更详细地解释了正在发生的事情。
您也可以阅读reload source中的cmets以获得进一步的启发。
我可以想象更复杂的重新加载逻辑,尤其是在决定何时允许重新加载时。另请参阅this pacakge 了解一种可能的实现方式。
【讨论】:
api.add_files("custom-reload.js", 'web.browser');的东西。
您可以在客户端代码中通过Meteor.startup() 发送一些内容。我个人使用Bert 来敬酒。
【讨论】:
startup 将在迁移发生后运行。我建议使用我上面的评论来修改这个答案。我会的,但我快跑出门了。