是否有一种方法可以通过signalR中的唯一引导正确地向所有用户发送消息?

时间:2019-06-21 02:22:42

标签: signalr asp.net-core-signalr

SignalR让我感到难过!我有一个增长中的项目的清单...一旦在数据库中进行更新,我想让某些“关心”它的用户知道。

我真的不在乎他们是否在线。我只想向所有想知道更改的用户发送一条消息。如果他们在线,那么他们会看到它。如果不是,则稍后会在登录后看到的另一组通知中显示。

关于这些用户,我所拥有的只是他们的唯一指导(表中的主键),然后是信息,例如:姓名和电子邮件。

在这种情况下,是否可以通过更改我已经拥有的信息来使用Clients.Users(list of users)

Clients.All.SendAsync完美运行。我只需要真正确定这种情况。

我希望这很清楚,可以使我走上正确的道路!

我正在使用AspNetCore。

我必须使用的示例信息:

User1

UserGuid - b7c103d0-78c0-43de-aaa0-1a07cb0c8e46

FirstName - John

LastName - Doe

Email - john.doe@mail.com



User2

UserGuid - cd75274b-19bc-4b8b-8eca-89947959ab03

FirstName - Jane

LastName - Doe

Email - jane.doe@mail.com




User3

UserGuid - df8ede1b-dada-4eec-bc6c-f32b70bd8bd9

FirstName - Bob

LastName - Doe

Email - bob.doe@mail.com

我想要做的是向User1和User3发送消息。如何确定signalR仅向他们触发消息所需的用户信息?我不想向所有人发送消息

1 个答案:

答案 0 :(得分:0)

您在这里有几个问题,这些问题是根据其他一些知识而精简的。

  1. 某些用户关心x,y或z。 -您需要将用户与他们关心的内容相关联,例如在数据库表中。您如何知道的将取决于您如何创建/设置用户以及他们如何了解x,y或z。

  2. 如何仅向关心它们的用户发送有关x,y或z的更新。 -您可以使用群组。用户登录后,获取他们关心的内容并将其添加到该组中。他们注销后,将其从组中删除。您可以使用Client.Groups(“ x”)。method(message)发送给他们,其中“ x”是组的名称。这将发送到该组的每个成员。

  3. 如果他们不在线,请稍后显示。 -这需要将您的消息和分组存储在数据库中。这变得比较棘手,因为现在您还必须跟踪用户1、2或3是否看到了特定消息。您可能需要对此部分做一些其他研究。但是Google和Stack可以提供很多服务。