コード例 #1
0
        private IEnumerable <ChatFormat> ParseChatLinks(WorldSession session, ClientChat chat)
        {
            foreach (ChatFormat format in chat.Formats)
            {
                switch (format.FormatModel)
                {
                case ChatFormatItemGuid chatFormatItemGuid:
                {
                    Item item = session.Player.Inventory.GetItem(chatFormatItemGuid.Guid);
                    // TODO: this probably needs to be a full item response
                    yield return(new ChatFormat
                        {
                            Type = ChatFormatType.ItemItemId,
                            StartIndex = 0,
                            StopIndex = 0,
                            FormatModel = new ChatFormatItemId
                            {
                                ItemId = item.Entry.Id
                            }
                        });

                    break;
                }

                default:
                    yield return(format);

                    break;
                }
            }
        }
コード例 #2
0
        public async void RegistraClient(TcpClient client)
        {
            //mclient.Add(client);
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff = new char[512];

                Debug.WriteLine("Pronto ad ascoltare...");
                int nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                string Nickname = new string(buff, 0, nBytes);
                Debug.WriteLine("Returned bytes: {0}. Nickname: {1}", nBytes, Nickname);
                ClientChat newclient = new ClientChat();
                newclient.Nickname = Nickname;
                newclient.Client   = client;

                mclient.Add(newclient);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
            }
        }
コード例 #3
0
        public async void RegistraClient(TcpClient client)
        {
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff   = new char[512];
                int    nBytes = 0;

                Console.WriteLine("In attesa di Nickname...");
                //ricezione del nickname
                nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                string recvText = new string(buff, 0, nBytes);
                Console.WriteLine("Nickname: {0}", recvText);
                ClientChat newclient = new ClientChat();
                newclient.Nickname = recvText;
                newclient.Client   = client;

                mClients.Add(newclient);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Errore: " + ex.Message);
            }
        }
コード例 #4
0
        private void Login_Click(object sender, EventArgs e)
        {
            //criar a conexao
            SqlConnection con = new SqlConnection(conString);

            //abrir base de dados
            con.Open();
            //comando para comparar os dados escritos com as colunas utilizador e passe da base de dados
            SqlCommand    cmd = new SqlCommand("select * from tblContas where Utilizador = '" + LoginUT.Text + "' and Passe = '" + LoginPass.Text + "'", con);
            SqlDataReader dr;

            dr = cmd.ExecuteReader();
            int count = 0;

            while (dr.Read())
            {
                count += 1;
            }
            if (count == 1)
            {
                ClientChat c1 = new ClientChat();
                c1.ShowDialog();
            }
            else
            {
                //mensagem de erro caso a conta nao esteja na base de dados
                MessageBox.Show("Password ou Nome de Utilizador nao estao corretos");
            }

            Clear();
        }
コード例 #5
0
        private void RimuoviClient(TcpClient client)
        {
            ClientChat nm = mClients.Where(riga => riga.Client == client).FirstOrDefault();

            if (nm != null)
            {
                mClients.Remove(nm);
            }
        }
コード例 #6
0
 public static void HandleChat(WorldSession session, ClientChat chat)
 {
     if (chat.Message.StartsWith("!"))
     {
         CommandManager.ParseCommand(chat.Message, out string command, out string[] parameters);
         CommandHandlerDelegate handler = CommandManager.GetCommandHandler(command);
         handler?.Invoke(session, parameters);
     }
 }
コード例 #7
0
ファイル: Program.cs プロジェクト: IrinaButu/TestChat
        private static async Task StartChat(ClientService clientService, string userName, int portNo)
        {
            using (var socket = new ClientWebSocket())
            {
                try
                {
                    await clientService.Connect(socket, Connection + ":" + portNo);

                    var         input       = userName + " connected!";
                    ChatMessage chatMessage = new ChatMessage()
                    {
                        User = "", Message = input
                    };

                    await clientService.Send(socket, chatMessage);

                    Console.WriteLine("Type leaveChat for exit!");

                    chatMessage.User = userName;

                    bool exit = false;
                    do
                    {
                        await ClientChat.Receive(socket);

                        input = Console.ReadLine();

                        switch (input)
                        {
                        case "leaveChat":
                            chatMessage.Message = userName + " disconnected!";
                            await clientService.Send(socket, chatMessage);

                            await clientService.Disconnect(socket, chatMessage.Message);

                            exit = true;
                            break;

                        case "":
                        case "exit":
                            break;

                        default:
                            chatMessage.Message = input;
                            await ClientChat.Send(socket, chatMessage);

                            break;
                        }
                    } while (!exit);
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"ERROR - {ex.Message}");
                }
            }
        }
コード例 #8
0
        public async Task <IActionResult> PutChat(int id, ClientChat cc)
        {
            Chat chat = new Chat(cc, true);

            if (id != chat.ChatId)
            {
                return(BadRequest());
            }

            _context.Entry(chat).State = EntityState.Modified;


            if (chat.Users != null && chat.Users.Count != 0)
            {
                foreach (Participation p in chat.Users)
                {
                    _context.Entry(p).State = EntityState.Modified;
                    Participation similar = _context.Participations.Where(pa => pa.ChatId == p.ChatId && pa.UserId == p.UserId).FirstOrDefault();
                    if (similar == default)
                    {
                        _context.Participations.Add(p);
                    }
                    _context.Entry(p.User).State = EntityState.Modified;
                }
            }

            if (chat.Messages != null && chat.Messages.Count != 0)
            {
                foreach (Message m in chat.Messages)
                {
                    _context.Entry(m).State = EntityState.Modified;
                }
            }

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ChatExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
コード例 #9
0
        public async Task <ActionResult <ClientChat> > GetChat(int id)
        {
            var chat = await _context.Chats.Include(c => c.Messages).Include(c => c.Users).SingleOrDefaultAsync(c => c.ChatId == id);

            var clientChat = new ClientChat(chat, _context, true);

            if (chat == null)
            {
                return(NotFound());
            }

            return(clientChat);
        }
コード例 #10
0
 public static void HandleChat(WorldSession session, ClientChat chat)
 {
     if (chat.Message.StartsWith("."))
     {
         CommandManager.ParseCommand(chat.Message.Remove(0, 1), out string command, out string[] parameters);
         if (CommandManager.GetCommand(session, command, parameters, out CommandManager.CommandHandler handler))
         {
             handler.Invoke(session, parameters);
         }
     }
     else
     {
         // TODO
     }
 }
コード例 #11
0
        private void RemoveClient(TcpClient client)
        {
            // LINQ è una libreria in cui posso usare "cose" peculiari del SQL su Liste<> in c#

            // LINQ in forma SQL
            //ClientChat cc = (from riga in mClients where riga.Client == client select riga).FirstOrDefault();

            // LINQ in forma c#
            ClientChat cc = mClients.Where(riga => riga.Client == client).FirstOrDefault();

            if (cc != null)
            {
                mClients.Remove(cc);
            }
        }
コード例 #12
0
 public static void HandleChat(WorldSession session, ClientChat chat)
 {
     if (chat.Message.StartsWith(CommandPrefix))
     {
         try
         {
             CommandManager.ParseCommand(chat.Message, out string command, out string[] parameters);
             CommandHandlerDelegate handler = CommandManager.GetCommandHandler(command);
             handler?.Invoke(session, parameters);
         }
         catch (Exception e)
         {
             log.Warn(e.Message);
         }
     }
 }
コード例 #13
0
        public async Task <ActionResult <ClientChat> > PostChat(ClientChat clientChat)
        {
            Chat chat = new Chat(clientChat, true);
            List <Participation> parts = chat.Users;

            chat.Users = null;
            _context.Chats.Add(chat);

            foreach (Participation p in parts)
            {
                _context.Participations.Attach(p);
            }

            await _context.SaveChangesAsync();

            return(new ClientChat(chat, _context, true));
        }
コード例 #14
0
        /// <summary>
        /// Process and delegate a <see cref="ClientChat"/> message from <see cref="WorldSession"/>, this is called directly from a packet hander.
        /// </summary>
        public void HandleClientChat(WorldSession session, ClientChat chat)
        {
            if (chatChannelHandlers.ContainsKey(chat.Channel))
            {
                chatChannelHandlers[chat.Channel](session, chat);
            }
            else
            {
                log.Info($"ChatChannel {chat.Channel} has no handler implemented.");

                session.EnqueueMessageEncrypted(new ServerChat
                {
                    Channel = ChatChannel.Debug,
                    Name    = "SocialManager",
                    Text    = "Currently not implemented",
                });
            }
        }
コード例 #15
0
 public static void HandleChat(WorldSession session, ClientChat chat)
 {
     if (chat.Message.StartsWith(CommandPrefix))
     {
         try
         {
             CommandManager.Instance.HandleCommand(session, chat.Message, true);
         }
         catch (Exception e)
         {
             log.Warn(e.Message);
         }
     }
     else
     {
         SocialManager.Instance.HandleClientChat(session, chat);
     }
 }
コード例 #16
0
ファイル: ClientService.cs プロジェクト: humba019/ChatRMQ-API
        public async Task <List <ClientChat> > FindAllChatsByEmailAsync(string email)
        {
            List <ClientChat> clients = new List <ClientChat>();

            foreach (Chat chat in await _chatRepository.FindAllChatsByEmailAsync(email))
            {
                if (!chat.To.Equals(email))
                {
                    Client client = await _clientRepository.FindByIdAsync(chat.To);

                    ClientChat clientChat = new ClientChat();
                    clientChat.ClientName  = client.ClientName;
                    clientChat.ClientEmail = client.ClientEmail;
                    clientChat.Chat        = chat;
                    clients.Add(clientChat);
                }
            }
            return(clients);
        }
コード例 #17
0
 public static void HandleChat(WorldSession session, ClientChat chat)
 {
     if (chat.Message.StartsWith(CommandPrefix))
     {
         try
         {
             var target  = session.Player.GetVisible <WorldEntity>(session.Player.TargetGuid);
             var context = new WorldSessionCommandContext(session.Player, target);
             CommandManager.Instance.HandleCommand(context, chat.Message.Substring(CommandPrefix.Length));
         }
         catch (Exception e)
         {
             log.Warn($"{e.Message}: {e.StackTrace}");
         }
     }
     else
     {
         SocialManager.Instance.HandleClientChat(session, chat);
     }
 }
コード例 #18
0
        private void HandleLocalChat(WorldSession session, ClientChat chat)
        {
            var serverChat = new ServerChat
            {
                Guid    = session.Player.Guid,
                Channel = chat.Channel,
                Name    = session.Player.Name,
                Text    = chat.Message,
                Formats = ParseChatLinks(session, chat).ToList(),
            };

            session.Player.Map.Search(
                session.Player.Position,
                LocalChatDistace,
                new SearchCheckRangePlayerOnly(session.Player.Position, LocalChatDistace, session.Player),
                out List <GridEntity> intersectedEntities
                );

            intersectedEntities.ForEach(e => ((Player)e).Session.EnqueueMessageEncrypted(serverChat));
            SendChatAccept(session);
        }
コード例 #19
0
        public async void RegisterClient(TcpClient client)
        {
            // Data del primo client connesso
            if (mClients.Count == 0)
            {
                FirstDate = DateTime.Now;
            }

            // Lettura nickname
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff = new char[512];

                // Ricezione effettiva
                int nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                string Nickname = new string(buff, 0, nBytes);

                ClientChat NewClient = new ClientChat();
                NewClient.Nickname = Nickname;
                NewClient.Client   = client;

                // Aggiunta client alla lista
                mClients.Add(NewClient);

                Console.WriteLine($"Returned bytes {nBytes}, Messaggio: {Nickname}");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            Console.WriteLine($"Client connessi: {mClients.Count}. Client connesso: {client.Client.RemoteEndPoint}.");
        }
コード例 #20
0
        public async void RiceviMessaggio(TcpClient client)
        {
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff   = new char[512];
                int    nBytes = 0;

                while (true)
                {
                    Console.WriteLine("In attesa di un messaggio");
                    //ricezione messaggio asincrono
                    nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                    if (nBytes == 0)
                    {
                        RimuoviClient(client);
                        Console.WriteLine("Client Disconnesso");
                        break;
                    }
                    string recvText = new string(buff, 0, nBytes);

                    ClientChat nickClient = mClients.Where(e => e.Client == client).FirstOrDefault();
                    string     risp       = $"{nickClient.Nickname}: {recvText}";

                    InviaTutti(risp);
                }
            }
            catch (Exception ex)
            {
                RimuoviClient(client);
                Console.WriteLine("Errore: " + ex.Message);
            }
        }
コード例 #21
0
        public async void ReceiveMessage(TcpClient client)
        {
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff = new char[512];

                // Ricezione effettiva
                while (keep)
                {
                    Console.WriteLine("Pronto ad ascoltare...");
                    int nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                    if (nBytes == 0)
                    {
                        RemoveClient(client);
                        Console.WriteLine("Client disconnesso.");
                        break;
                    }
                    string recvMessage = new string(buff, 0, nBytes);

                    ClientChat cc          = mClients.Where(riga => riga.Client == client).FirstOrDefault();
                    string     replyToSend = $"({DateTime.Now.Hour}:{DateTime.Now.Minute}) {cc.Nickname}: {recvMessage}";

                    SendToAll(replyToSend);
                    Console.WriteLine($"Returned bytes {nBytes}, Messaggio: {recvMessage}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #22
0
        public async void RiceviMessaggi(TcpClient client)
        {
            NetworkStream stream = null;
            StreamReader  reader = null;

            try
            {
                stream = client.GetStream();
                reader = new StreamReader(stream);
                char[] buff = new char[512];

                //ricezione effettiva
                while (continua)
                {
                    Debug.WriteLine("Pronto ad ascoltare...");
                    int nBytes = await reader.ReadAsync(buff, 0, buff.Length);

                    if (nBytes == 0)
                    {
                        rimuoviClient(client);
                        Debug.WriteLine("Client disconnesso.");
                        break;
                    }
                    string recvMessage = new string(buff, 0, nBytes);
                    Debug.WriteLine("Returned bytes: {0}. Messaggio: {1}", nBytes, recvMessage);

                    ClientChat nickClient = mclient.Where(e => e.Client == client).FirstOrDefault();
                    string     risposta   = $"{nickClient.Nickname}: " + recvMessage;
                    inviaATutti(risposta);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                rimuoviClient(client);
            }
        }
コード例 #23
0
        private void Login_Click(object sender, EventArgs e)
        {
            // verify if the fields are empty
            if (LoginUT.Text == "" && LoginPass.Text == "")
            {
                MessageBox.Show("Empty fields");
            }
            else
            {
                //Query created to access the required data
                string query = "SELECT * FROM AccountsT where Username = @LoginUT AND Password =@LoginPass";
                //Connection link to data base
                SQLiteConnection conn = new SQLiteConnection(connectionString);
                //open connection
                conn.Open();
                SQLiteCommand cmd = new SQLiteCommand(query, conn);
                //Read Values to compare to DB
                cmd.Parameters.AddWithValue("@LoginUt", LoginUT.Text);
                cmd.Parameters.AddWithValue("@LoginPass", LoginPass.Text);
                SQLiteDataAdapter da = new SQLiteDataAdapter(cmd);
                DataTable         dt = new DataTable();
                da.Fill(dt);

                if (dt.Rows.Count > 0)
                {
                    //if the parameters are correct opens the chat window
                    ClientChat c1 = new ClientChat();
                    c1.ShowDialog();
                }
                else
                {
                    MessageBox.Show("Username or Password are Incorrect");
                }

                //Function to clean text boxes
                Clear();
            }

            void Clear()
            {
                LoginUT.Text = LoginPass.Text = "";
            }

            #region V1method
            ///////////////////////////////////////////////////////////////////////////
            ///     Method used to Login using SQL Local DB on Managment Studio     ///
            ///////////////////////////////////////////////////////////////////////////

            /*
             * //Link to connect program to local data base
             * string conString = @"Data Source=DESKTOP-I0BR7JC;Initial Catalog=Contas CD;Integrated Security=True";
             *
             * //Create connexion
             * SqlConnection con = new SqlConnection(conString);
             * //abrir base de dados
             * con.Open();
             * //command to compare thge writen data to the username and passwords collums on data base
             * SqlCommand cmd = new SqlCommand("select * from tblContas where Utilizador = '" + LoginUT.Text + "' and Passe = '" + LoginPass.Text + "'", con);
             * SqlDataReader dr;
             * dr = cmd.ExecuteReader();
             * int count = 0;
             * while (dr.Read())
             * {
             *  count += 1;
             * }
             * if (count == 1)
             * {
             *  //if the parameters are correct opens the chat window
             *  ClientChat c1 = new ClientChat();
             *  c1.ShowDialog();
             * }
             * else
             * {
             *  // error message in case of wrng pass or username
             *  MessageBox.Show("Username or Passowrd are Incorrect ");
             * }
             *
             * //Function to clean text boxes
             * Clear();
             *
             */
            #endregion
        }
コード例 #24
0
ファイル: Client.cs プロジェクト: MilKID/InGame_Chat
 void Start()
 {
     clientchat = GetComponent <ClientChat>();
 }