Esempio n. 1
0
 public void TearDown()
 {
     client?.Close();
     bootstrap?.Stop();
 }
Esempio n. 2
0
        private void btnConn_Click(object sender, EventArgs e)
        {
            if (_client != null)
            {
                _client.Close();
                _client = null;
            }

            //var headerQuery = new Name

            var tokenbase64 = string.Empty;

            try
            {
                Convert.FromBase64String(txtToken.Text.Trim());
                tokenbase64 = txtToken.Text.Trim();
            }
            catch (Exception exception)
            {
                var tokenQuery = HttpUtility.ParseQueryString(txtToken.Text.Trim());
                var token      = new Token()
                {
                    Did = Convert.ToInt32(tokenQuery["did"]),
                    Rid = Convert.ToInt32(tokenQuery["rid"]),
                    Uid = tokenQuery["uid"]
                };

                var pbCovnert = new ProtoResponseConvert();
                tokenbase64 = Convert.ToBase64String(pbCovnert.SerializeObject(token));
            }



            _client         = new PirateXClient($"ps://{txtHost.Text.Trim()}:{txtPort.Text.Trim()}", tokenbase64);
            _client.Headers = HttpUtility.ParseQueryString(txtHeader.Text.Trim());
            if (!string.IsNullOrEmpty(comboBox1.Text))
            {
                _client.DefaultFormat = comboBox1.Text;
            }
            //_client.ExHeaders

            //_client.ExHeaders.Add("deviceid",HttpUtility.UrlEncode(Guid.NewGuid().ToString()));
            //_client.ExHeaders.Add("phone","windows");
            //_client.ExHeaders.Add("os","1.0");
            //_client.ExHeaders.Add("net","wlan");
            _client.OnOpen           += OnOpen;
            _client.OnError          += OnError;
            _client.OnClosed         += OnClosed;
            _client.OnReceiveMessage += (o, args) =>
            {
                this.Invoke((EventHandler) delegate
                {
                    var tin  = Convert.ToInt64(args.Package.Headers["_tin_"]);
                    var tout = Convert.ToInt64(args.Package.Headers["_tout_"]);

                    if (Equals(args.Package.Headers["c"], "_CommandList_"))
                    {
                        var list = Encoding.UTF8.GetString(args.Package.ContentBytes).Split(new char[] { ',' });
                        cbbCMDList.Items.Clear();
                        foreach (var item in list.OrderBy(s => s))
                        {
                            cbbCMDList.Items.Add(item);
                        }

                        cbbCMDList.Text = list[0];
                    }
                    else if (Equals(args.Package.Headers["c"], "_CommandArgs_"))
                    {
                        if (args.Package.ContentBytes.Length > 0)
                        {
                            txtQuery.Text = Encoding.UTF8.GetString(args.Package.ContentBytes).Replace(",", "={xxxxx}&") + "={xxxxx}";
                        }
                    }

                    this.jsonViewer1.ResponseInfo = args.Package;
                    btnSend.Enabled    = true;
                    btnDisconn.Enabled = true;
                });
            };

            _client.OnNotified += (o, args) =>
            {
                this.Invoke((EventHandler) delegate
                {
                    this.jsonViewer1.ResponseInfo = args.Package;
                    btnSend.Enabled    = true;
                    btnDisconn.Enabled = true;
                });
            };


            _client.OnResponseProcessed += (o, log) =>
            {
                this.Invoke((EventHandler) delegate
                {
                    this.lable_duration.Text = $"{log.Ts} ms";
                });
            };

            _client.OnSend += (o, args) =>
            {
                this.Invoke((EventHandler) delegate
                {
                    this.jsonViewer1.NewOut(args.Package.ToRequestPackage());
                });
            };
            _client.Open();
        }