Esempio n. 1
0
        public void Handshake(string url)
        {
            if (!socketDictionary.ContainsKey(url))
            {
                WebSocket socket = new WebSocket(url);

                socket.OnClose += (sender, e) =>
                {
                    Console.WriteLine(url + " : connection closed");
                    Program.genericGUIForm.richTextBoxStatusUpdates.AppendText(
                        url + " has fallen away. Nay!" + Environment.NewLine
                        );
                    socketDictionary.Remove(url);
                    return;
                };
                socket.OnMessage += (sender, e) =>
                {
                    if (e.Data == "Handshake to client")
                    {
                        Console.WriteLine(e.Data);
                    }
                    else
                    {
                        Console.WriteLine("Creating new chain from client");
                        Chain newChain = JsonConvert.DeserializeObject <Chain>(e.Data);
                        if (newChain.CheckIntegrity() && newChain.ChainList.Count > Program.ProjectD.ChainList.Count)
                        {
                            List <Message> messagesToAdd = new List <Message>();
                            messagesToAdd.AddRange(newChain.MessageQueue);
                            messagesToAdd.AddRange(Program.ProjectD.MessageQueue);

                            newChain.MessageQueue = messagesToAdd;
                            Program.ProjectD      = newChain;
                        }
                    }
                };
                socket.Connect();
                socket.Send("Handshake to server");
                socket.Send(JsonConvert.SerializeObject(Program.ProjectD));
                socketDictionary.Add(url, socket);
                Program.genericGUIForm.richTextBoxStatusUpdates.AppendText(
                    url + " is now connected" + Environment.NewLine
                    );
            }
        }
Esempio n. 2
0
        protected override void OnMessage(MessageEventArgs e)
        {
            if (e.Data == "Handshake to server")
            {
                Console.WriteLine(e.Data);
                Console.WriteLine(Context.UserEndPoint.Address.ToString());
                //Console.WriteLine(Context.UserEndPoint.Port.ToString());
                Send("Handshake to client");
                try
                {
                    Program.genericGUIForm.richTextBoxStatusUpdates.AppendText(Context.UserEndPoint.Address.ToString() + " is connected to you!" + Environment.NewLine);
                }
                catch (Exception f)
                {
                    if (f is InvalidOperationException)
                    {
                        Console.WriteLine("Threading error: " + f);
                    }
                    else
                    {
                        Console.WriteLine("Unexpected error: " + f);
                    }
                }
            }
            if (e.IsPing)
            {
                Console.WriteLine("You've just been pinged");
                Send("Connection live");
            }
            else
            {
                try
                {
                    Chain newChain = JsonConvert.DeserializeObject <Chain>(e.Data);
                    Console.WriteLine("Creating new chain from server");
                    if (newChain.CheckIntegrity() && newChain.ChainList.Count > Program.ProjectD.ChainList.Count)
                    {
                        List <Message> messagesToAdd = new List <Message>();
                        messagesToAdd.AddRange(newChain.MessageQueue);
                        messagesToAdd.AddRange(Program.ProjectD.MessageQueue);

                        newChain.MessageQueue = messagesToAdd;
                        Program.ProjectD      = newChain;
                    }

                    if (!Synchronized)
                    {
                        Send(JsonConvert.SerializeObject(Program.ProjectD));
                        Synchronized = true;
                    }
                }
                catch (Exception g)
                {
                    if (g is JsonReaderException)
                    {
                        if (!e.Data.IsNullOrEmpty())
                        {
                            Console.WriteLine(e.Data.ToString() + " received as data");
                        }
                    }
                    else
                    {
                        Console.WriteLine(g);
                    }
                }
            }
        }