如何通过SignalR服务器推送告诉不同的客户?

时间:2014-07-08 16:20:26

标签: signalr

我刚刚完成了一个SignalR示例,众所周知的Chat sample

此示例只是从一个客户端向所有客户端广播聊天消息。如果我们只想向特定客户发送消息怎么办?

(我想应该有一些ID来识别每个客户端。当客户端订阅服务器时,这些ID应该存储在服务器上。服务器可以选择将消息推送到哪个ID。)

2 个答案:

答案 0 :(得分:2)

您可以通过不同的方式使用连接映射用户。您可以根据您的要求比较this tutorial中的不同方式。

另一种解决方案是为每个userId定义1个组,并在您想要通知用户(link)时通知该组。小心,团体不安全。

答案 1 :(得分:1)

与Daniel描述的一样,您可以使用组或使用hubcontext使用连接ID获取特定连接的上下文。

var client = context.Clients.Client(connectionId);

还有几个库抽象SignalR,其中一些以自己的方式调用特定用户。

我创建了一个基于事件聚合模式的库。它附带了一个API,可让您创建确定哪些客户端应该接收特定事件的代码

https://github.com/AndersMalmgren/SignalR.EventAggregatorProxy/wiki/Implement-constraint-handlers

这里还有一篇博客文章,展示了如何使用我的库实现声明性角色授权,也许它可以给你一些想法。 http://andersmalmgren.com/2014/06/12/client-server-event-aggregation-with-role-authorization/