个人资料

跳过导航链接首页 > 博客列表 > 博客正文

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

分类:

选择客户端发送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/9 1:13:59 最近更新2017/11/9 1:13:59 4441
为此篇作品打分
10
   评论