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



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

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

我们发现有两种方法可以实现相同的功能。1. 通知。2. 广播。

对于这两种类型,注册用户都获得通知。

Notification:用户注册一个特定的事件,一个新的线程将被创建,客户端将在线程中得到通知。

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

Broadcast:为了摆脱事件的无限轮询,我们使用Broadcast。在这里,用户注册一个特定的事件,当事件发生时,它可以被发布到客户端。

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

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

因此,当X发布一些状态更新时,Z将评论它,因此他将注册该事件(即,如果其他人评论该帖子,则Z将被通知,但Y不会被通知)。

如何使用jersey 2.8 SSE实现这种通知?

我得到了以下实现相同

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

最新更新