示例#1
0
        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);
            }
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
 void IChatCore.ChatMessageHandle(ChatMessageFromServerContainer chatMessage)
 {
     displayMessageService.Write($"{chatMessage.Name}: {chatMessage.Text}");
 }