public async Task Connect(string webSockerUrl)
        {
            if (_webSocket != null)
            {
                await Close();
            }

            _webSocket = new MessageWebSocketRx();
            _subscriptions.Add(_webSocket.ObserveConnectionStatus.Subscribe(OnConnectionChange));

            var uri             = new Uri(webSockerUrl);
            var messageObserver = await _webSocket.CreateObservableMessageReceiver(uri, excludeZeroApplicationDataInPong : true);

            _subscriptions.Add(messageObserver.Subscribe(OnWebSocketOnMessage));
        }
        public async Task Close()
        {
            if (_webSocket != null)
            {
                foreach (var subscription in _subscriptions)
                {
                    subscription.Dispose();
                }
                _subscriptions.Clear();

                await _webSocket.CloseAsync();

                _webSocket.Dispose();
                _webSocket = null;
            }
        }