private void MessageReceived(object o, MessageEventArgs args)
        {
            if (!_enable)
            {
                return;
            }
            var msg = args.Data;

            var response = PlayerResponse.ToObject(msg);

            StatusReceived?.Invoke(response);
        }
Beispiel #2
0
        private async void Connect()
        {
            try
            {
                if (messageWebSocket == null)
                {
                    messageWebSocket = new MessageWebSocket();
                    messageWebSocket.Control.MessageType = SocketMessageType.Utf8;
                    messageWebSocket.MessageReceived    += (sender, args) =>
                    {
                        using (DataReader reader = args.GetDataReader())
                        {
                            reader.UnicodeEncoding = UnicodeEncoding.Utf8;

                            try
                            {
                                string read     = reader.ReadString(reader.UnconsumedBufferLength);
                                var    response = PlayerResponse.ToObject(read);
                                StatusReceived?.Invoke(response);
                            }
                            catch (Exception ex)
                            {
                                LogReceived?.Invoke(ex.Message);
                            }
                        }
                    };
                    messageWebSocket.Closed += (sender, args) =>
                    {
                        _websocketConnected = false;
                        ConnectionChanged?.Invoke(_websocketConnected);
                    };
                }

                await messageWebSocket.ConnectAsync(new Uri(WebsocketUrl));

                messageWriter = new DataWriter(messageWebSocket.OutputStream);

                _websocketConnected = true;
                ConnectionChanged?.Invoke(_websocketConnected);
                AddRegister(_registered);
            }
            catch (Exception)
            {
                _websocketConnected = false;
                ConnectionChanged?.Invoke(_websocketConnected);
                await Task.CompletedTask;
            }
        }
        public static PlayerResponse ToObject(string jsonStr)
        {
            var jsonObject = JSON.Parse(jsonStr);
            var obj        = new PlayerResponse();

            obj.ConnectedDeviceCount = (int)jsonObject["ConnectedDeviceCount"];


            obj.RegisteredKeys = new List <string>();
            foreach (var jsonValue in jsonObject["RegisteredKeys"].AsArray)
            {
                obj.RegisteredKeys.Add(jsonValue.Value);
            }

            obj.ActiveKeys = new List <string>();
            foreach (var jsonValue in jsonObject["ActiveKeys"].AsArray)
            {
                obj.ActiveKeys.Add(jsonValue.Value);
            }

            obj.ConnectedPositions = new List <PositionType>();
            foreach (var jsonValue in jsonObject["ConnectedPositions"].AsArray)
            {
                obj.ConnectedPositions.Add(EnumParser.ToPositionType(jsonValue.Value));
            }

            obj.Status = new Dictionary <string, int[]>();

            var status = jsonObject[("Status")];

            foreach (var statusKey in status.Keys)
            {
                var arr  = status[statusKey];
                var item = new int[arr.Count];
                var i    = 0;
                foreach (var jsonValue in arr)
                {
                    item[i] = jsonValue.Value.AsInt;
                    i++;
                }
                obj.Status[statusKey] = item;
            }

            return(obj);
        }
Beispiel #4
0
        internal static PlayerResponse ToObject(string jsonStr)
        {
            JsonObject jsonObject = JsonObject.Parse(jsonStr);
            var        obj        = new PlayerResponse();

            obj.ConnectedDeviceCount = (int)jsonObject.GetNamedNumber("ConnectedDeviceCount");

            obj.RegisteredKeys = new List <string>();
            foreach (var jsonValue in jsonObject.GetNamedArray("RegisteredKeys", new JsonArray()))
            {
                obj.RegisteredKeys.Add(jsonValue.GetString());
            }

            obj.ActiveKeys = new List <string>();
            foreach (var jsonValue in jsonObject.GetNamedArray("ActiveKeys", new JsonArray()))
            {
                obj.ActiveKeys.Add(jsonValue.GetString());
            }

            obj.ConnectedPositions = new List <PositionType>();
            foreach (var jsonValue in jsonObject.GetNamedArray("ConnectedPositions", new JsonArray()))
            {
                obj.ConnectedPositions.Add(EnumParser.ToPositionType(jsonValue.GetString()));
            }

            obj.Status = new Dictionary <string, int[]>();

            var status = jsonObject.GetNamedObject("Status");

            foreach (var statusKey in status.Keys)
            {
                var arr  = status.GetNamedArray(statusKey, new JsonArray());
                var item = new int[arr.Count];
                var i    = 0;
                foreach (var jsonValue in arr)
                {
                    item[i] = (int)jsonValue.GetNumber();
                    i++;
                }
                obj.Status[statusKey] = item;
            }

            return(obj);
        }