/// <summary>
        /// Disconnect from the remote ros environment.
        /// </summary>
        public void Disconnect()
        {
            if (!connected)
            {
                return;
            }

            _recvThread.Abort();
            foreach (var sub in _subscribers)
            {
                _ws.Send(ROSBridgeMsg.UnSubscribe(sub.Key.topic));
            }
            foreach (var p in _publishers)
            {
                _ws.Send(ROSBridgeMsg.UnAdvertiseTopic(p.topic));
            }
            foreach (var srv in _serviceServers)
            {
                _ws.Send(ROSBridgeMsg.UnadvertiseService(srv.Key.topic));
            }

            _ws.Close();
            _msgQueue.Clear();

            _connected = false;
        }
 /// <summary>
 /// Remove a Service server from this connection
 /// </summary>
 /// <param name="srv"></param>
 public void Unadvertise(ROSBridgeServiceProvider srv)
 {
     if (connected)
     {
         _ws.Send(ROSBridgeMsg.UnadvertiseService(srv.topic));
     }
     _serviceServers.Remove(srv);
 }