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

使用jersey 2.8的通知-通知特定用户组,jersey,server-sent-events,Jersey,Server Sent Events,我们使用jersey 2.8在应用程序中实现RESTful Web服务 因此,同样,我们使用ServerSentEvent SSE通知用户服务器端发生任何事件 我们发现有两种方法可以实现相同的功能。 1.通知。 2.广播 对于这两种类型,注册用户都会收到通知 通知:用户为同一线程注册特定事件,将创建新线程,并在线程中通知客户端 使用通知方法的问题:在通知的情况下,我们必须通过无限次轮询线程中事件的发生来继续等待事件发生 广播:为了摆脱对事件的无限轮询,我们使用了广播。在这里,用户注册一个特定的事

我们使用jersey 2.8在应用程序中实现RESTful Web服务

因此,同样,我们使用ServerSentEvent SSE通知用户服务器端发生任何事件

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

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

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

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

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

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

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

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


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

我得到了以下实现方法

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