使用jersey 2.8的通知 - 通知特定的用户组

时间:2014-06-01 05:26:15

标签: jersey server-sent-events

我们正在使用jersey 2.8在我们的应用程序中实现RESTful webservice。

因此,我们使用ServerSentEvent(SSE)来通知用户在服务器端发生任何事件。

我们发现有两种实现方法。 1.通知。 2.广播。

对于这两种类型,注册用户都会收到通知。

通知:将创建用户为同一个新线程注册特定事件,并在线程中通知客户端。

使用通知方法的问题:在通知的情况下,我们必须继续等待事件发生(通过简单地无限地轮询线程中事件的发生)。

广播:为了摆脱对我们使用广播的事件的无限轮询。在这里,用户注册特定事件,并且事件发生它可以发布到客户端。

广播方法的问题:如果我们想要通知特定的用户群,我们就不知道应该如何实现这一点。

例如:在Facebook通知的情况下,X人发布某些状态,有以下类别的人, Y - 谁喜欢这个帖子。 Z - 谁评论了这个帖子。 q - 谁是X的朋友,但既没有评论也没有喜欢。

因此,当人X发布一些状态更新时,人Z将对其进行评论,以便他将注册该事件(即,如果其他人对该帖子发表评论,则会通知Z,但不会通知Y)。 / p>

如何使用jersey 2.8 SSE实现此类通知?

1 个答案:

答案 0 :(得分:0)

我采用以下方式实现相同的

  1. 我给广播公司写了一个包装器,接受所有请求,它维护一个Map,其中包含广播公司的地图给各个客户通知。
    例如:在问题中使用相同的例子,对于人员X在帖子上发表评论的人Z时,将调用2个服务,
    • 将发布评论。
    • 其他将用于注册通知。 因此,在地图中,我们将有commentId的条目映射到广播公司。并且用户Z将被添加到要广播的客户端列表中。
  2. 每当发生任何新事件时,我们都会从地图中获取我们需要广播的广播公司,并向广播公司广播。
    例如:当其他人对帖子发表评论时,我们会从地图中使用commentId获得相应的广播,并将消息广播给客户。