/// <summary>
        /// Called when the proxy disconnected because of a socket error. Handles retries and event invocation.
        /// </summary>
        /// <param name="exception"></param>
        private void HandleProxyDisconnect(Exception exception = null)
        {
            // TODO: Automatic reconnection attempts

            if (exception != null)
            {
                Debug.Log(exception.ToString());
            }

            _server.Close();
            if (ProxyDisconnected != null)
            {
                ProxyDisconnected.Invoke();
            }
        }
        /// <summary>
        /// Disconnect from the connected server.
        /// </summary>
        public void Disconnect()
        {
            if (!_server.Connected)
            {
                return;
            }

            _server.Close();

            _hostname   = string.Empty;
            _portNumber = 0;

            if (ProxyDisconnected != null)
            {
                ProxyDisconnected.Invoke();
            }
        }