コード例 #1
0
        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();
        }
コード例 #2
0
ファイル: LogoutEventArgs.cs プロジェクト: xuan2261/Anarchy
 public LogoutEventArgs(GatewayCloseError error)
 {
     Error = error;
 }