2016-11-19 36 views
0

我在AngularJS中有一个客户端,我从服务器端使用Java中的多个SSE(Server-Sent-Events)(在不同Web服务器中有多个端点后端)。在angular.js eventsource中订购和过滤Server-Sent-Events

 Diagram link

注:我必须使用SSE。

我目前注册一个监听器,每种类型的事件从每个SSE连接未来,如:

source.addEventListener('alpha', function(e) { 
    doSomething(); 
}, false); 

目的是根据这些事件显示通知,以及与此我有几个问题:

  • 客户如何知道后端的信息是否发生变化?
  • 如何组织和过滤这些事件?例如,通过同时接收来自多个连接的多个事件,如何管理它们以便向客户显示关于特定事件的特定通知?

    注意:我不仅仅在谈论每种类型的事件组织,而且我还需要考虑事件是否比另一个更重要。

    到目前为止,我只想到接收所有事件,并将它们保存在可以排序和过滤的列表中。如果两个SSE事件同时被触发,是否有问题?你知道这个例子吗?

  • 在客户端组织事件的逻辑是一个好主意吗?

  • 我应该为这些事件创建一个数据库吗?

谢谢

回答

0

在您需要AJAX定期调用知道是否有在服务器(SSE)变化数据的客户端。在angularjs中,服务器端调用有$http and $q服务。你也可以使用$scope.$watch

在JavaScript中没有办法处理android处理推送通知的方式。

如果网络套接字选项符合您的要求,您也可以看到网络套接字选项。

+0

谢谢@Aniruddha Das。我有几个问题: - 为什么我必须定期调用服务器以确定数据是否有变化?当且仅当服务器中的内容发生变化时,SSE事件才能发送新数据?如果没有,是不是可以将旧数据与从AngularJS中同一事件接收到的新数据进行比较? [我问,因为也许这些不是最好的方法] P.D.不幸的是我不得不使用SSE。 – sie

+0

正如你想通知你的用户,如果有任何改变从服务器端。如果用户浏览器是开放的,他不需要刷新,您只需定期拨打电话更新用户浏览器 –

+0

我明白了。好的,最后一个问题。你认为在客户端组织事件的逻辑是一个好主意吗?谢谢! – sie