1. 程式人生 > >SignarL服務器端發送消息給客戶端的幾種情況

SignarL服務器端發送消息給客戶端的幾種情況

實現 cas ron -m ide lex call 默認 .html

原文: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服務器端發送消息給客戶端的幾種情況