Reactjs React应用程序通知系统与Apollo订阅

Reactjs React应用程序通知系统与Apollo订阅,reactjs,architecture,notifications,apollo,Reactjs,Architecture,Notifications,Apollo,我有一个有趣的设计挑战/问题要解决 我有一个应用程序需要在多个事件中通知用户: 新的直接消息 新组消息 还有更多 该通知将显示为toast,并在header组件中指示Bell图标。如果您看到通知,请单击它,它会将您重定向到显示包含给定组的消息或消息的视图的路由 合理的做法是在App.ts中进行订阅,因为我们希望无论用户在哪条路线上都能显示通知 这听起来很简单,但让我们进入场景 目前,在一个组消息路由组件中,我有一个查询,它获取所有消息以及subscribeToMoresubscription

我有一个有趣的设计挑战/问题要解决

我有一个应用程序需要在多个事件中通知用户:

  • 新的直接消息
  • 新组消息
还有更多

该通知将显示为toast,并在header组件中指示Bell图标。如果您看到通知,请单击它,它会将您重定向到显示包含给定组的消息或消息的视图的路由

合理的做法是在
App.ts
中进行订阅,因为我们希望无论用户在哪条路线上都能显示通知

这听起来很简单,但让我们进入场景

目前,在一个组消息路由组件中,我有一个查询,它获取所有消息以及
subscribeToMore
subscription,因为我希望消息实时显示。一切都很好,小组中的某个人写了一条消息,它实时出现在提要中

当我试图想出一种方法在用户离开此视图时通知他们时,挑战就开始了。我想知道如何把这两个世界结合起来

我希望在用户位于组消息路由上时显示消息(但由于用户已在查看消息提要,因此不显示通知),并在用户离开该路由时显示通知

显然,如果我在两个地方订阅,一个在顶级应用程序组件中,另一个在路由组件本身中,它将不起作用

我不知道如何解决这个问题


有人有什么想法吗?

为什么不使用activatedRoute筛选“主订阅”?如果这在服务器端不可行,您仍然可以在客户端执行。类似于if(route.id!==subData.message.id){notify}