选择客户端发送RPC,Clients属性返回一个HubConnectionContext对象提供不同的选项,用于选择向何种客户端将会接收RPC。
1. 发向所有的客户端
Clients.All.addContosoChatMessageToPage(name, message);
2. 只发给调用客户端
Clients.Caller.addContosoChatMessageToPage(name, message);
3. 发给所有客户端,除了调用客户端.
Clients.Others.addContosoChatMessageToPage(name, message);
4. 发给指定ID的客户端.
Clients.Client(Context.ConnectionId).addContosoChatMessageToPage(name, message);
上面这个例子调用了addContosoChatMessageToPage 方法,在调用的客户端中和 Clients.Caller 具有相同的意义。.
5. 所有连接的客户端,除了指定的ID客户端.
Clients.AllExcept(connectionId1, connectionId2).addContosoChatMessageToPage(name, message);
6. 在一个组里所有连接的客户端.
Clients.Group(groupName).addContosoChatMessageToPage(name, message);
7. 在一个组里所有连接的客户端,排除指定ID的客户端.
Clients.Group(groupName, connectionId1, connectionId2).addContosoChatMessageToPage(name, message);
8. 指定组内的客户端, 除了调用的client.
Clients.OthersInGroup(groupName).addContosoChatMessageToPage(name, message);
9. 一个指定的用户,通过id区分。.
Clients.User(userid).addContosoChatMessageToPage(name, message);
默认的, 这是IPrincipal.Identity.Name, 他可以通过下面的方式更改: registering an implementation of IUserIdProvider with the global host.
10. 发送给一系列 connection IDs的所有的客户端和组
Clients.Clients(ConnectionIds).broadcastMessage(name, message);
11. 组的列表
Clients.Groups(GroupIds).broadcastMessage(name, message);
12. 通过用户名.
Clients.Client(username).broadcastMessage(name, message);
13. 一系列用户名(SignalR 2.1引入).
Clients.Users(new string[] { "myUser", "myUser2" }).broadcastMessage(name, message);
方法名称没有编译确认
定义的方法名是一个动态的对象,没有智能提示和编译确认,表达式是在运行时评价的,当方法调用的时候,SignalR发送方法的名字和参数给客户端,如果客户端有这个方法和该方法名匹配,则方法被调用参数进行传递。而如果没有匹配项的时候,什么都不发生,没有错误提示,关于调用一个客户端方法时SignalR传递的数据格式