示例#1
0
        public void Connect()
        {
            if (Socket != null && Socket.IsAlive)
            {
                Disconnect();
            }

            Socket = new WebSocket("wss://" + Server.Server.Split(':')[0] + "?v=4");

            if (_client.HttpClient.Proxy != null)
            {
                if (_client.HttpClient.Proxy.Type == ProxyType.HTTP) //WebSocketSharp only supports HTTP proxies :(
                {
                    Socket.SetProxy($"http://{_client.HttpClient.Proxy.Host}:{_client.HttpClient.Proxy.Port}", "", "");
                }
            }

            Socket.OnClose += (sender, e) =>
            {
                DiscordVoiceCloseEventArgs error = null;
                if (e.Code > 1000)
                {
                    error = new DiscordVoiceCloseEventArgs((DiscordVoiceCloseError)e.Code, e.Reason);
                }

                Connected = false;

                OnDisconnected?.Invoke(this, error);
            };
            Socket.OnMessage += Socket_OnMessage;
            Socket.Connect();
        }
示例#2
0
        public DiscordVoiceSession(DiscordSocketClient client, DiscordVoiceServer server, ulong channelId)
        {
            VoiceLock = new object();
            _client   = client;
            Server    = server;
            ChannelId = channelId;

            _socket   = new WebSocket("wss://" + Server.Server.Split(':')[0] + "?v=4");
            UdpClient = new UdpClient();

            if (_client.Config.Proxy != null)
            {
                if (_client.Config.Proxy.Type == ProxyType.HTTP) //WebSocketSharp only supports HTTP proxies :(
                {
                    _socket.SetProxy("http://" + _client.Config.Proxy, "", "");
                }
            }

            _socket.OnClose += (sender, e) =>
            {
                DiscordVoiceCloseEventArgs error = null;
                if (e.Code > 1000)
                {
                    error = new DiscordVoiceCloseEventArgs((DiscordVoiceCloseError)e.Code, e.Reason);
                }

                State = DiscordVoiceClientState.NotConnected;

                OnDisconnected?.Invoke(this, error);
            };

            _socket.OnMessage += Socket_OnMessage;

            _socket.Connect();

            State = DiscordVoiceClientState.Connecting;
        }