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(); }
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; }