Example #1
0
        void OnApplicationPause(bool paused)
        {
            if (this._pauseState == paused)
            {
                return;
            }

            this._pauseState = paused;
            if (paused)
            {
                this._executionQueue.Clear();
                this._delayCalls.Clear();
                this._delayCallId = 0;

                SocketApi.OnApplicationFocus(false);
            }
            else
            {
                if (!this._resumePending)
                {
                    this._resumePending = true;
                    this.Invoke(nameof(this.TryOnApplicationResumed), resumePendingDuration);
                }
            }
        }
Example #2
0
        public static void clearCookie()
        {
            PlayerPrefs.SetString(COOKIE, "");
            PlayerPrefs.Save();

            SocketApi.OnCookieChanged();
        }
Example #3
0
 void TryOnApplicationResumed()
 {
     this._resumePending = false;
     if (this._pauseState == false)
     {
         SocketApi.OnApplicationFocus(true);
     }
 }
Example #4
0
        private void StartTrades(object sender, RoutedEventArgs e)
        {
            outDg.ItemsSource = tradesDataSource;

            SocketApi.StartTrades(GetPair(), (wsTrade) => {
                tradesDataSource.Add(wsTrade);
                outDg.Items.Refresh();
            });

            gbox.Header = SocketApi.LastUrl;
            ToggleStartButtons(false);
        }
Example #5
0
        private void StartKline(object sender, RoutedEventArgs e)
        {
            outDg.ItemsSource = klineDataSource;

            SocketApi.StartKline(GetPair(), KlineInterval.Minutes1, (wsKline) => {
                klineDataSource.Add(wsKline);
                outDg.Items.Refresh();
            });

            gbox.Header = SocketApi.LastUrl;

            ToggleStartButtons(false);
        }
Example #6
0
        private void StartDepth(object sender, RoutedEventArgs e)
        {
            outDg.ItemsSource = depthDataSource;

            SocketApi.StartDepth(GetPair(), (wsDepth) => {
                var items = DepthViewItem.BuildFromDepth(wsDepth);
                depthDataSource.AddRange(items);
                outDg.Items.Refresh();

                outDg.ScrollIntoView(outDg.Items[outDg.Items.Count - 1]);
            });

            gbox.Header = SocketApi.LastUrl;
            ToggleStartButtons(false);
        }
Example #7
0
        public static void Connect(
            string url,
            GetCurrentChannelId getCurrentChannelId,
            GetLoginSession getLoginSession,
            bool isDebug = false
            )
        {
            SocketApi.FetchSocketUrl()
            .Then(socketUrl => {
//                    _webSocket = new WebSocket(new Uri($"{socketUrl}/v1"));
//                    _webSocket.OnOpen += OnWebSocketOpen;
//                    _webSocket.OnMessage += OnMessageReceived;
//                    _webSocket.OnIncompleteFrame += OnIncompleteFrame;
//                    _webSocket.Open();
            });
        }
Example #8
0
        void Start()
        {
            if (_singletonChecker)
            {
                DebugerUtils.DebugAssert(false, "fatal error! Cannot initialize two WebSocketHost!");
                return;
            }

            _singletonChecker = true;

            this._socketGateway = new SocketGateway(this);

            this.m_InternetState = NetworkReachability.NotReachable;

            SocketApi.ResetState();
        }
Example #9
0
        public static void updateCookie(string newCookie)
        {
            var cookie       = PlayerPrefs.GetString(COOKIE);
            var cookieDict   = new Dictionary <string, string>();
            var updateCookie = "";

            if (cookie.isNotEmpty())
            {
                var cookieArr = cookie.Split(';');
                foreach (var c in cookieArr)
                {
                    var name = c.Split('=').first();
                    cookieDict.Add(name, c);
                }
            }

            if (newCookie.isNotEmpty())
            {
                var newCookieArr = newCookie.Split(',');
                foreach (var c in newCookieArr)
                {
                    var item = c.Split(';').first();
                    var name = item.Split('=').first();
                    if (cookieDict.ContainsKey(name))
                    {
                        cookieDict[name] = item;
                    }
                    else
                    {
                        cookieDict.Add(name, item);
                    }
                }

                var updateCookieArr = cookieDict.Values;
                updateCookie = string.Join(";", updateCookieArr);
            }

            if (updateCookie.isNotEmpty())
            {
                PlayerPrefs.SetString(COOKIE, updateCookie);
                PlayerPrefs.Save();

                SocketApi.OnCookieChanged();
            }
        }
Example #10
0
        public void Update()
        {
            using (WindowProvider.of(context: GlobalContext.context).getScope()) {
                lock (this._executionQueue) {
                    while (this._executionQueue.Count > 0)
                    {
                        this._executionQueue.Dequeue().Invoke();
                    }
                }

                var delta = Time.deltaTime;
                while (this._delayCalls.Count > 0)
                {
                    var call  = this._delayCalls[0];
                    var delay = call.remainInterval;
                    if (delay > delta)
                    {
                        call.remainInterval -= delta;
                        break;
                    }

                    delta -= call.remainInterval;
                    var callback = call.callback;
                    this._delayCalls.RemoveAt(0);
                    callback?.Invoke();
                }

                if (Application.internetReachability != this.m_InternetState)
                {
                    this.m_InternetState = Application.internetReachability;

                    //force reconnect if the connection state changes to online
                    if (this.m_InternetState == NetworkReachability.ReachableViaCarrierDataNetwork ||
                        this.m_InternetState == NetworkReachability.ReachableViaLocalAreaNetwork)
                    {
                        SocketApi.OnNetworkConnected();
                    }
                    else
                    {
                        SocketApi.OnNetworkDisconnected();
                    }
                }
            }
        }
Example #11
0
 private void StopWs(object sender, RoutedEventArgs e)
 {
     SocketApi.Stop();
     UserStreamApi.Stop();
     ToggleStartButtons(true);
 }
Example #12
0
        static int Main(string[] args)
        {
            var processA = Process.Start("ztserver.exe", "-h 8080");
            var processB = Process.Start("ztserver.exe", "-h 8081 -z 9996");

            Thread.Sleep(3000);

            var clientSocketA  = new SocketApi("http://localhost:8080");
            var clientSocketB  = new SocketApi("http://localhost:8081");
            var clientNetworkA = new NetworkApi("http://localhost:8080");
            var clientNetworkB = new NetworkApi("http://localhost:8081");

            Console.WriteLine("Joining networks...");

            clientNetworkA.Join(new IO.Swagger.Model.ZeroTierJoinRequest
            {
                Nwid = "8bd5124fd6206336",
                Path = "ztidentityA",
            });
            clientNetworkB.Join(new IO.Swagger.Model.ZeroTierJoinRequest
            {
                Nwid = "8bd5124fd6206336",
                Path = "ztidentityB",
            });

            Console.WriteLine("Creating local UDP ports...");

            var udpClientA = new UdpClient(0, AddressFamily.InterNetwork);
            var udpClientB = new UdpClient(0, AddressFamily.InterNetwork);

            var portA = ((IPEndPoint)udpClientA.Client.LocalEndPoint).Port;
            var portB = ((IPEndPoint)udpClientB.Client.LocalEndPoint).Port;

            Console.WriteLine("Forwarding ports...");

            var forwardA = clientSocketA.Forward(new IO.Swagger.Model.ZeroTierForwardRequest(portA));
            var forwardB = clientSocketB.Forward(new IO.Swagger.Model.ZeroTierForwardRequest(portB));

            try
            {
                Console.WriteLine("Retrieving address information...");

                var infoA = clientNetworkA.GetInfo();
                var infoB = clientNetworkB.GetInfo();

                Console.WriteLine("Sending packet from client A to client B...");

                var helloWorld = "Hello World";
                var msg        = new List <byte>();
                msg.Add(0);
                msg.AddRange(IPAddress.Parse(infoB.Addresses.First(x => x.Contains("."))).GetAddressBytes());
                msg.AddRange(BitConverter.GetBytes((ushort)forwardB.Zt4port.Value).Reverse() /* endian switch LE -> NBO */);
                msg.AddRange(Encoding.ASCII.GetBytes(helloWorld));
                var msgBytes = msg.ToArray();
                udpClientA.Send(msgBytes, msgBytes.Length, new IPEndPoint(IPAddress.Loopback, forwardA.Proxyport.Value));

                Console.WriteLine("Trying to receive a packet on client B from client A...");
                IPEndPoint r       = new IPEndPoint(IPAddress.Loopback, 0);
                var        recvMsg = udpClientB.Receive(ref r);
                if (recvMsg == null)
                {
                    Console.WriteLine("Failed to receive message!");
                    return(1);
                }

                if (recvMsg.Length < 10)
                {
                    Console.WriteLine("Received message was unexpected length.");
                    return(1);
                }

                if (recvMsg[0] == 1)
                {
                    Console.WriteLine("Message didn't have IPv4 header");
                    return(1);
                }

                var recvAddr = new IPAddress(new[]
                {
                    recvMsg[1],
                    recvMsg[2],
                    recvMsg[3],
                    recvMsg[4],
                });
                var recvPort = BitConverter.ToUInt16(new[]
                {
                    recvMsg[6],
                    recvMsg[5],
                }, 0);

                var clientAAddress = IPAddress.Parse(infoA.Addresses.First(x => x.Contains(".")));

                if (!recvAddr.Equals(clientAAddress))
                {
                    Console.WriteLine("Message didn't arrive from client A IP address");
                    return(1);
                }
                if (recvPort != (ushort)forwardA.Zt4port.Value)
                {
                    Console.WriteLine("Message didn't arrive from expected port");
                    return(1);
                }

                Console.WriteLine("TEST PASS - Received message over ZT between two clients!");

                return(0);
            }
            finally
            {
                Console.WriteLine("Unforwarding ports...");

                clientSocketA.Unforward(new IO.Swagger.Model.ZeroTierUnforwardRequest
                {
                    Proxyport = forwardA.Proxyport
                });
                clientSocketB.Unforward(new IO.Swagger.Model.ZeroTierUnforwardRequest
                {
                    Proxyport = forwardB.Proxyport
                });

                Console.WriteLine("Leaving networks...");

                clientNetworkA.Leave(new IO.Swagger.Model.ZeroTierLeaveRequest());
                clientNetworkB.Leave(new IO.Swagger.Model.ZeroTierLeaveRequest());

                processA.Kill();
                processB.Kill();
            }
        }