我遇到了以下问题.我想做以下事情.
当连接新客户端时,组参数将被发送到SignalR服务器端(以URL或其他方式).
然后我想只通知特定组的客户.
例如
I have 3 clients: 1) with group parameter = a 2) with group parameter = a 3) with group parameter = b
我想只通知组参数== a的客户端.
如果我使用动态字段客户端,它将为所有客户端发送消息.
有可能以某种方式过滤接收器吗?
解决方法
如果要向所有组成员发送消息,则需要在组中添加客户端.您可以定义组名称,也可以让客户选择.例如:
<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script> <script src="Scripts/jquery.signalR.js" type="text/javascript"></script> <script src="signalr/hubs" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { var g = $.connection.groups; g.send = function (t) { $("#groups").append(t); }; $("#btnJoin").click(function () { g.addGroup($("#gr").val()); }); $("#btnSend").click(function () { g.sendMessage("a"); //for example a group. }); $.connection.hub.start(); }); </script> <select id="gr"> <option value="a">a</option> <option value="b">b</option> <option value="c">c</option> </select> <div id="groups"></div> <input id="btnJoin" type="button" value="Join"/> <input id="btnSend" type="button" value="Send"/>
public class Groups : Hub { public void AddGroup(string groupName) { GroupManager.AddToGroup(Context.ClientId,groupName); Clients.send(Context.ClientId + " join " + groupName + " group.<br />"); } public void SendMessage(string groupName) { Clients[groupName].send(groupName + " group - Hello Everybody!"); } }