当运行以下SignalR代码时,属于多个合格组的成员将收到多条消息:
public class ChatHub : Hub
{
public void Send(string name, string message, params string[] groups)
{
this.Clients.Groups(groups).broadcast(name, message);
}
}
有没有办法向属于任何群组成员的用户发送单个消息?换句话说,如果上面的groups
参数定义为["grpA","grpB"]
,我希望发生以下情况:
答案 0 :(得分:2)
除了创建自己的方式来跟踪每个群组中的用户以及在广播之前/之后自己跟踪不同用户之外,还有其他方法无法做到这一点。
可能会在将来的版本中引入此API,但目前还没有办法实现。
答案 1 :(得分:1)
目前在signalR中没有这样的功能。要实现此功能,您可以将连接存储在包含
信息的数据库内存中的某个位置MemberID,GroupID,SignalRConnectionID
然后获取特定组成员的不同connectionID,并使用类似
的语法向他们发送消息List<String> connectionIDs = #GET DISTINCT LIST OF CONNECTIONS FROM DB OR IN MEMORY STORAGE#;
Clients.Clients(connectionIDs).broadcast(name, message);