void ISender.MessageToRecipient(string recipientName, ChatMessageFromServerContainer transportContainer) { var recipientConnections = connectionsService.Connections.Where(u => u.UserObject.Name == recipientName); var transportContainerJson = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJson); foreach (var recipientConnection in recipientConnections) { recipientConnection.Stream.Write(byteString, 0, byteString.Length); } }
void ISender.MessageToAll(ClientConnection connection, ChatMessageFromServerContainer transportContainer) { var connections = connectionsService.Connections; var transportContainerJson = JsonConvert.SerializeObject(transportContainer); var byteString = Encoding.UTF8.GetBytes(transportContainerJson); foreach (var connectionItem in connections) { if (connectionItem != connection) { connectionItem.Stream.Write(byteString, 0, byteString.Length); } } }
void ISender.Broadcast(ClientConnection connection, string messageText, JObject Args) { var connections = connectionsService.Connections; var transportContainer = new ChatMessageFromServerContainer(messageText); if (Args != null && Args.ContainsKey("Recipient")) { if (self.RecipientIsValid(Args) && connections.Any(u => u.UserObject.Name == Args["Recipient"].ToString())) { transportContainer.Name = $"[@]{connection.UserObject.Name}"; self.MessageToRecipient(Args["Recipient"].ToString(), transportContainer); var recipientId = connectionsService.Connections.FirstOrDefault(u => u.UserObject.Name == Args["Recipient"].ToString()).UserObject.ID; dataStorage.SaveMessage(messageText, recipientId, connection.UserObject.ID); } } else { transportContainer.Name = connection.UserObject.Name; self.MessageToAll(connection, transportContainer); dataStorage.SaveMessage(messageText, 0, connection.UserObject.ID); } }
void IChatCore.ChatMessageHandle(ChatMessageFromServerContainer chatMessage) { displayMessageService.Write($"{chatMessage.Name}: {chatMessage.Text}"); }