signalR:如何向用户发送一次消息,而不是ConnectionId的数量

时间:2017-10-19 03:12:05

标签: signalr

在信号器中,对于打开的每个标签,ConnectionId为用户注册。

我使用以下代码向用户发送消息。 1 2

hubContext.Clients.Clients(user.ConnectionIds.ToLi st()); receiveNotification(message,userID,link);

我遇到的问题是我想向用户发送一次消息,而不是发送给ConnectionId的消息。

如何找到其中一个活动的ConnectionId并发送该消息?

有更好的方法吗?

我也在这个链接上工作

https://stackoverflow.com/questions/...ovider-new-2-0

但是因为 我不使用request.User.Identity.Name,此方法不起作用。我正在使用我的用户ID。我正在读桌子。 我的应用程序中request.User.Identity.Name的值为空,因为我正在从数据库中的表中读取用户信息

感谢您的建议

1 个答案:

答案 0 :(得分:0)

您可以在存储在内存中的地图中保留连接和用户信息。

private readonly Dictionary<T, HashSet<string>> _connections =
            new Dictionary<T, HashSet<string>>();

你可以在这里找到完整的例子:

https://docs.microsoft.com/en-us/aspnet/signalr/overview/guide-to-the-api/mapping-users-to-connections