SignalR教程5-服务器选择客户端发送RPC

Keywords:

选择客户端发送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传递的数据格式




作者:songshizhao 发表于:2017-11-09T01:13:59 访问量:484