SignarL服務器端發送消息給客戶端的幾種情況
一、所有連接的客戶端
Clients.All.addContosoChatMessageToPage(name, message);
二、只發送給呼叫的客戶端(即觸發者)
Clients.Caller.addContosoChatMessageToPage(name, message);
三、除了觸發者之外的所有客戶端
Clients.Others.addContosoChatMessageToPage(name, message);
四、由連接ID標識的特定客戶端
Clients.Client(Context.ConnectionId).addContosoChatMessageToPage(name, message);
public void SendToSingle(string toConnectionID, string fromName, string toName, string message)
{
Clients.Client(toConnectionID).SendToSingleClient("<li class=‘green_li‘>[" + fromName + "]對你說:" + message + " - " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</li>");
Clients.Client(Context.ConnectionId).SendFromSingleClient("<li class=‘green_li‘>你對[" + toName + "]說:" + message + " - " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</li>");
}
五、除了指定客戶端之外的所有連接的客戶端,由連接ID標識
Clients.AllExcept(connectionId1, connectionId2).addContosoChatMessageToPage(name, message);
public void SystemNotice(string connectionID, string username, string type)
{
if (type.Equals("1"))
{
Clients.AllExcept(connectionID).SystemNoticeClient("<li class=‘red_li‘>系統消息:"
+ username + " 加入聊天室 - " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</li>");
}
else
{
Clients.AllExcept(connectionID).SystemNoticeClient("<li class=‘red_li‘>系統消息:"
+ username + " 退出了聊天室 - " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "</li>");
}
}
六、在指定的組中的所有連接的客戶端
Clients.Group(groupName).addContosoChatMessageToPage(name, message);
七、指定組中除指定客戶端外的所有已連接客戶端,由連接ID標識
Clients.Group(groupName, connectionId1, connectionId2).addContosoChatMessageToPage(name, message);
八、指定組中除呼叫客戶端外的所有已連接客戶端
Clients.OthersInGroup(groupName).addContosoChatMessageToPage(name, message);
九、由userId標識的特定用戶
Clients.User(userid).addContosoChatMessageToPage(name, message);
(默認情況下,這是IPrincipal.Identity.Name可以通過向全局主機註冊IUserIdProvider的實現來更改的。)
十、連接ID列表中的所有客戶端和組
Clients.Clients(ConnectionIds).broadcastMessage(name, message);
十一、組ID列表中的所有組
Clients.Groups(GroupIds).broadcastMessage(name, message);
十二、用戶名標識的客戶端
Clients.Client(username).broadcastMessage(name, message);
十三、用戶名列表對應的所有客戶端(在SignalR 2.1中引入)
Clients.Users(new string[] { "myUser", "myUser2" }).broadcastMessage(name, message);
SignarL服務器端發送消息給客戶端的幾種情況