private void Connect()
        {
            if (socketClient != null && (socketClient.IsConnected || socketClient.IsConnecting))
            {
                Disconnect();
                socketClient = null;
            }

            switch (type)
            {
            case Type.Ssl:
                var sslContext = sslCertificateAsset.GetContext();
                socketClient = new UnitySslClient(sslContext, serverIp, serverPort);
                break;

            case Type.Tcp:
                socketClient = new UnityTcpClient(serverIp, serverPort);
                break;

            case Type.Udp:
                socketClient = new UnityUdpClient(serverIp, serverPort);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            buffer = new byte[socketClient.OptionReceiveBufferSize];

            socketClient.OnConnectedEvent    += OnConnected;
            socketClient.OnDisconnectedEvent += OnDisconnected;
            socketClient.OnErrorEvent        += OnError;
            socketClient.ConnectAsync();
        }
        public void UpdateState(IUnitySocketClient socketClient)
        {
            UpdateStateInfoText(socketClient);
            bool connected = socketClient != null && socketClient.IsConnected;

            sendMessageButton.interactable = connected;
            disconnectButton.interactable  = connected;
            sslConnectButton.interactable  = !connected;
            tcpConnectButton.interactable  = !connected;
            udpConnectButton.interactable  = !connected;
        }
        private void UpdateStateInfoText(IUnitySocketClient socketClient)
        {
            if (socketClient == null)
            {
                return;
            }

            var text = $"Server ip: {socketClient.Endpoint.Address}, Server port: {socketClient.Endpoint.Port}\n" +
                       $"Connecting: {socketClient.IsConnecting}, IsConnected: {socketClient.IsConnected}\n ";

            stateInfoText.text = text;
        }