【问题标题】:How we can implement a "Bell Notification" inside asp.net mvc-6 core我们如何在 asp.net mvc-6 核心中实现“铃铛通知”
【发布时间】:2019-04-17 13:19:45
【问题描述】:

我正在开发一个 asp.net 核心 Web 应用程序,我们的系统有很多功能可以通过实现类似贝尔的通知(即被很多社交媒体网站使用),如下:-

现在在这个阶段,我试图了解这些通知在幕后是如何工作的,因为在我们检查通知之后,我们将不会收到任何待处理的项目。所以据我了解,它的工作原理如下:-

  1. 我需要在我的页面中有一个 javascript,它将检查我们的数据库中分配给用户 + 的所有通知,这些通知之前没有被阅读过。
  2. 然后显示如上所示的数字。
  3. 如果用户点击铃铛查看待处理项目>> post请求应该被发送到我们的后端,以更新他们已经被用户阅读的这些待处理项目?

我不确定这些通知是否以这种方式工作?是否有任何教程描述了我们如何获得类似贝尔的实时通知?

【问题讨论】:

  • 没有 MVC 6,请不要再这样称呼它了。 ASP.NET Core 已经 3 年多没有被这样调用了
  • @Tseng 好的,我更新了我的问题.. 感谢您提供的信息。

标签: c# asp.net-mvc asp.net-core push-notification signalr


【解决方案1】:

您的问题过于宽泛,无法合理回答,但一般来说:

  • 如果您对它只在页面刷新/更改时更新感到满意,您根本不需要 JavaScript。例如,如果这是您网站布局的一部分,那么它将加载到每个页面上。当用户浏览网站时,每次用户请求新页面时,铃声都会根据当前的通知计数进行更新。但是,如果他们长时间停留在同一页面上,他们将不会被告知任何进一步的新通知。不过,这不一定是问题。许多网站的行为都是这样的。

  • 如果您确实想要立即更新,那么您需要使用 SignalR (websockets)。在服务器端,您将创建一个集线器和客户端,您将从该集线器 (JavaScript) 订阅特定的消息类型。当发生需要通知用户的事情时,将通过集线器发送该类型的新消息,该消息将立即发送到订阅的客户端。然后将调用客户端订阅回调,允许您执行动态更新通知计数(更多 JavaScript)等操作。

  • 无论您选择哪种方法,为该服务器端创建一个视图组件都会为您提供最好的服务。例如,这将允许您将查询数据库以获取通知和呈现铃声的逻辑封装在一起,然后简单地将其放入您的布局中。

  • 如果有客户端(即即时更新),您可能还想在那里使用某种组件(通过 Vue.js、React、Angular 等 - 每个都有他们自己的“组件”)。这将允许您类似地将所有逻辑封装在一个易于重用的容器中。

【讨论】:

  • 好的,谢谢您的信息...将检查这些解决方案..但是当用户阅读它们时隐藏/删除 Bell 通知号码呢?那些实际上是从贝尔发送到后端的请求,以更新通知的状态为已读,所以不会显示待处理的数字?或者如果我们使用 SignalR,这将自动为我们处理?
  • 嗯,这将涉及到 JavaScript,但可以在没有 SignalR 的情况下完成。事实上,即使使用 SignalR,无论有没有它,它仍然可以完成。只是取决于你想如何处理它。
  • “不重新发明轮子”部分来自于使用视图组件、SignalR、Vue/React/Angular 组件等。但是,没有插入“这里是通知的钟声”的东西.您仍然需要编写代码来连接所有内容、处理 UI/UX 等。这不是重新发明轮子——这只是在做您得到报酬的事情:程序。
  • 这取决于具体的用例。 TempData 仅用于临时通知,例如成功保存的内容-不需要持久化的内容。如果您想要持久通知,那么您需要使用数据库。您需要以某种方式获取所有通知的列表,并将一个或多个标记为已读。这可能只是服务类或 API 端点上的方法,或两者​​兼而有之。 SignalR 只是启用双向通信;它与核心实现无关。
  • 都差不多。 SignalR 专门针对实时通信。服务总线、消息代理等用于通用消息传递。这可以包括实时或更高级的场景。这真的取决于你需要什么。如果你所做的只是这个,那么 SignalR 是最简单和最直接的,但如果你需要一个消息代理,无论如何,你也可以使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2021-11-05
  • 2022-11-18
  • 1970-01-01
相关资源
最近更新 更多