public void Login(string token) { if (Token != token) { Token = token; } Socket = new WebSocket("wss://gateway.discord.gg/?v=6&encoding=json"); if (Config.Proxy != null) { if (Config.Proxy.Type == ProxyType.HTTP) //WebSocketSharp only supports HTTP proxies :( { Socket.SetProxy("http://" + Config.Proxy.Host + Config.Proxy.Port, Config.Proxy.Username, Config.Proxy.Password); } } Socket.OnMessage += SocketDataReceived; Socket.OnClose += (sender, e) => { Reset(); if (e.Code >= (ushort)GatewayCloseError.UnknownError) { GatewayCloseError err = (GatewayCloseError)e.Code; if (err != GatewayCloseError.RateLimited && err != GatewayCloseError.SessionTimedOut && err != GatewayCloseError.UnknownError) { if (LoggedIn) { LoggedIn = false; OnLoggedOut?.Invoke(this, new LogoutEventArgs(err)); } } } if (LoggedIn) { while (true) { try { Login(Token); return; } catch { Thread.Sleep(100); } } } }; Socket.Connect(); }
public LogoutEventArgs(GatewayCloseError error) { Error = error; }