对 meteor js 应用程序实施 Web 通知
Implement web notifications to meteor js app
您好,我正在尝试学习 Meteor Js,并且我开始构建一个简单的任务管理器应用程序。
当用户从输入中添加任务时,我想添加一个通知(使用通知 api)。我的问题是我找不到从服务器端在用户之间发送通知的方法。
到目前为止我有什么:
Template.listPage.events({
'submit #newItem':function(e){
e.preventDefault();
//variables to insert here here. i dont post for space issues.
// Call server method for insert into db
Meteor.call('addItem',item,d,user,datestring,currentList,listName,assign);
// This is what i m trying to implement
var items = todos.find({name:item}).observe({
added:function() {
var n = new Notification("hello new task added")
}
})
},
上面的工作原理是:
通知仅显示给添加任务的用户(不是很有用)。
我如何在服务器端使用它,以便:
向所有使用该应用程序的用户显示通知?这可能吗,还是我必须使用推送通知包?
PS:我请求用户允许在 Meteor.startup 上接收通知。
要添加通知,您可以使用 yogiben:notifications
等软件包:
https://atmospherejs.com/yogiben/notifications
(现在可能会有更好的包。在大气中搜索。)
或者,您可以推出自己的解决方案。基本思想是添加创建一个名为 Notifications
的集合。然后随时添加通知,并将相关通知发布给您想要的任何用户。
只要您将相关 todos
发布给不同的用户,您问题中的代码也将有效。
问题是您在点击事件中指定了观察。因此,只有触发事件(即点击按钮)的用户才会收到通知。
为了激活每个人的观察者,请执行以下操作:
Template.listPage.rendered = function(){
todos.find().observe({
added: function() {
... do whatever you want to do here
}
})
};
您好,我正在尝试学习 Meteor Js,并且我开始构建一个简单的任务管理器应用程序。 当用户从输入中添加任务时,我想添加一个通知(使用通知 api)。我的问题是我找不到从服务器端在用户之间发送通知的方法。 到目前为止我有什么:
Template.listPage.events({
'submit #newItem':function(e){
e.preventDefault();
//variables to insert here here. i dont post for space issues.
// Call server method for insert into db
Meteor.call('addItem',item,d,user,datestring,currentList,listName,assign);
// This is what i m trying to implement
var items = todos.find({name:item}).observe({
added:function() {
var n = new Notification("hello new task added")
}
})
},
上面的工作原理是: 通知仅显示给添加任务的用户(不是很有用)。 我如何在服务器端使用它,以便: 向所有使用该应用程序的用户显示通知?这可能吗,还是我必须使用推送通知包? PS:我请求用户允许在 Meteor.startup 上接收通知。
要添加通知,您可以使用 yogiben:notifications
等软件包:
https://atmospherejs.com/yogiben/notifications
(现在可能会有更好的包。在大气中搜索。)
或者,您可以推出自己的解决方案。基本思想是添加创建一个名为 Notifications
的集合。然后随时添加通知,并将相关通知发布给您想要的任何用户。
只要您将相关 todos
发布给不同的用户,您问题中的代码也将有效。
问题是您在点击事件中指定了观察。因此,只有触发事件(即点击按钮)的用户才会收到通知。
为了激活每个人的观察者,请执行以下操作:
Template.listPage.rendered = function(){
todos.find().observe({
added: function() {
... do whatever you want to do here
}
})
};