【问题标题】:Angular2/4: Alerts and notifications from the serverAngular2/4:来自服务器的警报和通知
【发布时间】:2017-11-04 00:56:18
【问题描述】:

我正在创建一个新的 Angular 2/4 应用程序。在主页上,我需要显示从服务器收到的任何紧急/紧急消息。我想知道在这种情况下什么是最好的选择。我查看了一些图书馆,但没有用。在这种情况下,信号器会有所帮助吗?还是谷歌资料?

【问题讨论】:

  • 您想要的确切行为尚不清楚。您希望在用户加载主页时打开通知?
  • 你可以使用服务器发送的事件。
  • @BeetleJuice 不是用户加载的。当我使用应用程序时,通知可以随时出现。收到通知后,我应该能够在我的应用程序顶部显示它们。

标签: angular signalr angular2-services signalr-hub


【解决方案1】:

我和@fastAsTortoise 有同样的想法。单向通知通道(服务器到客户端)符合服务器发送事件的确切目的。我不会为此引入新的 3rd 方库依赖项,因为这是一项简单的任务。

四处寻找使用您的后端语言的示例。客户端真的很简单。在根组件的ngOnInit 方法中,您可以打开频道并订阅其消息

eventChannel = new EventSource('YOUR_SERVER_URL_HERE');

ngOnInit(){
    Observable.fromEvent(this.eventChannel, 'open').subscribe(
        () => console.log('channel is open')
    );
    Observable.fromEvent(this.eventChannel, 'message').subscribe(
        e => console.log('message received', e.data)
    );
}

结帐the interface for Server-Sent-Events

【讨论】:

  • 谢谢。但如果我以后想把它改成双向通信,什么是最好的选择。
  • @indra257 websocket 将是性能最高的。您还可以使用 Ajax 轮询(例如每 90 秒发出一次请求并查看服务器是否返回新消息),这更容易实现但效率不高。
  • 我不想使用 Ajax 轮询,因为这些是应该立即显示的紧急通知。那么最好的选择是 websockets 吗? Signalr 是最佳选择吗?
  • @indra257 我不熟悉 Signalr。如果您需要立即通知,我会使用 Server-Sent-Events 或 Websockets。前者实现起来要简单得多,并且非常适合单向通信(当客户端所要做的就是收听通知时)。后者实现起来要复杂得多,但非常适合双向通信。
  • 我在服务器上有 Java 语言,我也在寻找类似的功能。最好的方法是什么?我想从服务器捕获通知。我有聊天框,我想在其中实现它。
【解决方案2】:

SignalR 可以在这里工作。 这就是我的计划:

  1. 在您的 .net 应用程序中设置一个集线器,以便它可以广播事件。
  2. 在您的 Angular 应用中包含 signalR.js,然后
  3. 根据从服务器广播的事件创建监听事件和警报。

这也可以是跨域的,或者如果它们在同一个域中,它会开箱即用。我在使用 phonegap 的移动应用程序上进行了尝试,它运行良好,当服务器向用户或组发送事件时,android 和 iphone 都能够执行操作。

【讨论】:

    【解决方案3】:

    这取决于您当前使用的服务器端语言,

    如果您想编写自己的聊天框架,可以开始使用 socket.io

    如果你想用.net写,你可以用signalR和dot net core

    Google material 是一个与您所寻找的完全不同的设计框架。您还可以查看一些可以快速实施的第三方库,例如 pusher

    【讨论】:

    • 我正在使用 Angular4 和 cli。后端位于 .net 中。我不是在寻找一个完整的聊天框架。我只需要在我的应用程序上显示紧急警报和通知。
    • 然后将其保存在数据库中并检索并显示它
    • 我可能随时收到紧急/警报通知,不仅在页面加载事件中,
    • 那你需要按照我上面说的去实现
    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2014-04-23
    相关资源
    最近更新 更多