如何编写网站通知?

时间:2019-04-13 03:03:33

标签: node.js angular notifications feathersjs

我正在为自己建立一个网站。我使用MongoDB,feathers.js,Node.js和Angular5。我想为其添加Notification。看起来像通知的StackOverflow。 enter image description here

我不需要推送通知。当我执行某些特定事件时,只需要一个红色高亮,就像通知的StackOverflow一样。 我是新手,所以请给我详细说明我需要编写前端和后端的内容,或有关它的一些很好的资料。 谢谢。

3 个答案:

答案 0 :(得分:0)

创建一个服务,该服务通过HTTP从服务器端请求通知。您的组件应显示红点将使用该服务,并根据该服务的响应更改其状态。 这是使用HTTP的示例:HTTP in Angular 因此,创建一个从服务器通知请求的服务。 然后,使用您创建的服务创建一个执行表示逻辑的组件(通过依赖注入,例如here来完成)。

答案 1 :(得分:0)

有两种方法可以实现此目的。

  • 您可以使用轮询来获取用户的通知。在轮询中,客户端在特定的时间间隔(例如5分钟)后向服务器发出请求,以询问是否有任何新的通知。然后使用响应类型,您可以显示/隐藏通知符号

  • 另一种方法是在服务器和客户端之间使用套接字连接建立通信时。每当需要将通知发送给用户时,服务器都会通过套接字连接推送通知,而不是等待客户端发出请求。

这两种方法都有其优点和缺点,轮询的实现要快得多,但是当您拥有数百万个客户时,这不是一个好习惯,因为服务器资源被占用了。另外,由于通知取决于客户端,因此轮询还会有一些延迟来发送通知。

建议:如果您要针对数千名用户或爱好项目实施实施,请进行轮询。仅当您迫切需要零延迟显示通知并且您的客户群至少为数百万时,才考虑使用套接字连接。

答案 2 :(得分:0)

如果您将socketio与羽毛一起使用,则易于实现。

event channels中进行了解。

这个想法是在服务器上创建一个通道,以通过套接字保留连接的用户。

app.on('connection', connection => {
   app.channel('anonymous').join(connection);
});

然后,如果调用了服务方法,则通知通道中的连接。

app.service('notifications').publish('created', (data, context) => {
  return app.channel('anonymous');
});

然后在客户端,您将通过侦听方法事件来获取已发布的数据。

app.service('notifications').on('created', notification => {
      console.log('notification created', notification);
   });

然后,如果您想要一个真实的例子,请尝试feathers chat