private async void ReceiveMessages()
        {
            try
            {
                while (_socket.State == WebSocketState.Open && !_cts.IsCancellationRequested)
                {
                    ArraySegment <byte> buffer = new ArraySegment <byte>(new byte[1024]);
                    await _socket.ReceiveAsync(buffer, _cts.Token);

                    string          msg      = buffer.Array.GetString();
                    JsonRpcResponse response = ReceiveMessage(!string.IsNullOrEmpty(_password) ? msg.Decrypt(_password) : msg);
                    Send(response.ToJson());
                }
            }
            catch { }
            Dispose();
            OnClose?.Invoke(this, new EventArgs());
        }