Пример #1
0
        static void TestThread(object d)
        {
            TcpClient client = new TcpClient("novastudios.tk", 8910);
            Message   secure = MessageHelpers.GetMessage(client.GetStream());
            User      user   = null;

            if (secure.Content != "")
            {
                SslStream ssl = new SslStream(client.GetStream(), false);
                ssl.AuthenticateAsClient(secure.Content);

                user = new User(Guid.NewGuid().ToString(), ssl);
                user.Init();
            }
            else
            {
                user = new User(Guid.NewGuid().ToString(), client.GetStream());
                user.Init();
            }

            user.OnMessageStatusReceivedCallback += (message) =>
            {
                if (message.StatusType == StatusType.ErrorDisconnect)
                {
                    Console.WriteLine(user.Name + " Error: " + message.Content);
                }
            };

            Random rnd = new Random();

            Console.WriteLine("Worker Running");
            while (!cts.IsCancellationRequested)
            {
                user.CreateMessage(RandomString(rnd, 20), NColor.GenerateRandomColor());
                Thread.Sleep(rnd.Next(750, 1000));
            }
            user.CreateStatus(StatusType.Disconnecting);
            try
            {
                user.Close();
            }
            catch { }
            Console.WriteLine("Worker Quit");
        }
Пример #2
0
        public ChatUI()
        {
            this.InitializeComponent();
            this.NavigationCacheMode = NavigationCacheMode.Enabled;

            Color = NColor.GenerateRandomColor();

            Window.Current.Closed += (s, e) =>
            {
                if (user != null)
                {
                    user.CreateStatus(StatusType.Disconnecting);
                }
            };

            Loaded += async(s, e) =>
            {
                if (!connected)
                {
                    client = new TcpClient();
                    await client.ConnectAsync(Address, Port);

                    NetworkStream stream   = client.GetStream();
                    Message       secure   = MessageHelpers.GetMessage(stream);
                    string        password = "";
                    if (secure.Name == "locked")
                    {
                        PasswordDialog pd = new PasswordDialog();
                        if (await pd.ShowAsync() == ContentDialogResult.Primary)
                        {
                            password = pd.Password;
                        }
                        else
                        {
                            if (Frame.CanGoBack)
                            {
                                Frame.GoBack();
                            }
                        }
                    }

                    if (secure.Content != "")
                    {
                        SslStream ssl = new SslStream(stream);
                        ssl.AuthenticateAsClient(secure.Content);
                        user = new User(Username, ssl);
                        user.Init(password);
                    }
                    else
                    {
                        user = new User(Username, stream);
                        user.Init(password);
                    }

                    user.OnMessageReceivedCallback             += User_OnMessageReceivedCallback;
                    user.OnMessageStatusReceivedCallback       += User_OnMessageStatusReceivedCallback;
                    user.OnMessageTransferReceivedCallback     += User_OnMessageTransferReceivedCallback;
                    user.OnMessageWhisperReceivedCallback      += User_OnMessageWhisperReceivedCallback;
                    user.OnMessageInitReceivedCallback         += User_OnMessageInitReceivedCallback;
                    user.OnMesssageInformationReceivedCallback += User_OnMesssageInformationReceivedCallback;
                    user.OnErrorCallback += (d) => { Debug.WriteLine(d.Message); };
                    connected             = true;
                }
            };
        }