Exemplo n.º 1
0
        private void MessageReceiver()
        {
            try
            {
                string ip = "193.219.91.103";
                //string ip = "doesntexist";
                //string ip = "127.0.0.1";
                ushort port = 7099;
                //ushort port = 54000;

                if (client.Connect(ip, port))
                {
                    // Wait for packet
                    while (client.PacketCount() == 0)
                    {
                        Thread.Sleep(10);
                    }

                    // Confirm connection
                    Packet result = client.GetPacket();
                    if (Encoding.ASCII.GetString(result.Data) == "Connected.")
                    {
                        connected = true;
                    }
                    else
                    {
                        connected = false;
                        return;
                    }
                }
                else
                {
                    connected = false;
                    return;
                }

                // Send request to open chat
                client.Send(new Packet
                {
                    PacketId = (uint)PacketType.OPEN_CHAT,
                    Data     = Encoding.ASCII.GetBytes(eventId.ToString())
                });

                // Wait for packet
                while (client.PacketCount() == 0)
                {
                    Thread.Sleep(10);
                }

                // Read confirmation packet
                client.GetPacket();

                // Load previous messages
                while (client.PacketCount() > 0)
                {
                    Packet message   = client.GetPacket();
                    string msgString = Encoding.ASCII.GetString(message.Data);
                    messages.Add(new Message(DataList.FromList(Json.ToList(msgString))));
                    Console.WriteLine(messages.Last().Content);
                }

                // Populate the chat window
                foreach (var msg in messages)
                {
                    AddMessage(msg);
                }

                // Listen for new messages
                while (true)
                {
                    if (!client.Connected())
                    {
                        break;
                    }

                    while (client.PacketCount() > 0)
                    {
                        Packet packetMessage = client.GetPacket();
                        Packet packetEventId = client.GetPacket();

                        Message message = new Message(DataList.FromList(Json.ToList(Encoding.ASCII.GetString(packetMessage.Data))));
                        string  eventId = Encoding.ASCII.GetString(packetEventId.Data);
                        if (this.eventId.ToString() == eventId)
                        {
                            Console.WriteLine(message.Content);
                            AddMessage(message);
                        }
                    }

                    Thread.Sleep(100);
                }
            }
            catch
            {
                return;
            }
        }