用户不在线时的 SignalR 推送通知

SignalR push notification when users are not online

我需要为我的asp.net核心project.For新闻服务实施推送通知

它需要以这样的方式工作,如果用户在发送消息时不在线,则消息将在下次在线时到达客户端。

我能找到的所有关于这个的文章,都对这个案例有些模糊,只是强调“实时”通信。 那么是否可以使用 signalr 推送通知?

it needs to work in such a manner that if the user is not online while a message is being sent out, then the message will arrive at the client when they are online thenext time.

为了达到您的上述要求,您可以尝试:

  1. 将用户映射到连接 ID 并保留该映射,这将有助于 find/get 基于用户名或电子邮件等可读信息的新连接 ID connect/reconnect 到集线器,然后您可以通过指定连接 ID 将未读 message/data 发送给特定用户。

    注意:您还可以通过将用户标识符传递给集线器方法中的 User 函数来向特定用户发送消息,请参阅此文档:https://docs.microsoft.com/en-us/aspnet/core/signalr/groups?view=aspnetcore-5.0#users-in-signalr

  2. 对于未读消息,如@SamiKuhmonen 所述,您可以 store/persist 将这些消息放在某个地方,如果您希望在重启后保留信息,或者您可以在 [=35= 上托管集线器],内存存储不是一个好方法。您可以尝试将消息存储在数据库等永久性外部存储中。

  3. 定义并使用标志来指示消息是否已被用户看到。客户端收到消息后,调用集线器方法来更新该标志或从存储中删除该消息。