public void Send(Guid senderId, MessageHub.Message message) { var clients = _clients.All(); foreach (MsmqConnectedClient client in clients) { if (client.Id == senderId) { continue; } client.Receive(senderId, message); } }
public void SendSecure(Guid senderId, SecureMessageContainer secureMessage) { IList <HubConnectedClient> allClients = _clients.All(); byte[] clearKey = KeyProvider.Decrypt(Convert.FromBase64String(secureMessage.EncryptedKey)); byte[] clearIV = KeyProvider.Decrypt(Convert.FromBase64String(secureMessage.EncryptedIV)); RSACryptoServiceProvider clientRsaProvider = new RSACryptoServiceProvider(); foreach (HubConnectedClient client in allClients) { if (client.Id == senderId) { continue; } var signalrClient = Clients.Client(client.ConnectionId); if (signalrClient != null) { clientRsaProvider.FromXmlString(client.PublicKey); SecureMessageContainer clientMessage = new SecureMessageContainer(); clientMessage.EncryptedData = secureMessage.EncryptedData; clientMessage.EncryptedKey = Convert.ToBase64String(clientRsaProvider.Encrypt(clearKey, false)); clientMessage.EncryptedIV = Convert.ToBase64String(clientRsaProvider.Encrypt(clearIV, false)); signalrClient.ReceiveSecure(senderId, clientMessage); } } }
public void Send(Guid senderId, Message message) { IList <WcfConnectedClient> receivers = _clients.All(); foreach (WcfConnectedClient client in receivers) { try { if (client.Id == senderId) { continue; } client.ClientCallback.Receive(senderId, message); } catch { RemoveReceiver(client.Id); } } }