private void Run()
        {

            WebSocketClient handler;
            if (TapeSimulatorSetting.Instance.IsDirectConnectToEss)
            {
                handler = new WebSocketClient(string.Format("ws://{0}:{1}", _host, Interlocked.Increment(ref _portNumber)), _userName, _password, _applianceGuid, _applianceDisplayName);
            }
            else
            {
                handler = new WebSocketClient(string.Format("ws://{0}:{1}",_host,_portNumber), _userName, _password, _applianceGuid, _applianceDisplayName);
            }
            while (true)
            {
                try
                {
                    var request = (WebSocketRequest)_nextElement.Get();
                    if (handler.Status == WebSessionStatus.Inactive)
                    {
                        handler.Login();
                    }
                    handler.SendRequest(request, true);
                }
                catch (ThreadAbortException)
                {
                    //Close the websocket connection
                    handler.Dispose();
                }
                catch (Exception e)
                {
                    Console.WriteLine("Exception in batch WebSocket pipeline AysncWebSocket.", e);
                }
            }
        }
 public static object SendRequestReturnResult(WebSocketClient handler, WebSocketRequest request)
 {
     var syncRequest = new WebSocketSyncRequest(request);
     WebSocketNotificationHandler.InitWaitEvent(syncRequest);
     object result = null;
     if (handler.SendRequest(request))
     {
         result = WebSocketNotificationHandler.WaitResponse(syncRequest);
     }
     return result;
 }