示例#1
0
        /// <summary>
        /// Handles a failed websocket request
        /// </summary>
        /// <param name="client">The websocket client which sent the request</param>
        /// <param name="args">Arguments associated with failure</param>
        private static void HandleFailedRequest(IWebSocketsClient client, RequestFailureEventArgs args)
        {
            LogUtility.LogMessage(String.Format("Request Failure (reason: {0})", Enum.GetName(typeof(RequestFailureReason), args.FailureReason)));

            bool   tryReconnect = false;
            string message      = null;

            switch (args.FailureReason)
            {
            case RequestFailureReason.Auth:
                tryReconnect = false;
                message      = "authentication problem";
                NotificationUtility.PostNotification(NotificationType.AuthFailure);
                break;

            case RequestFailureReason.Timeout:
                tryReconnect = ReconnectIsAllowed();
                message      = "timeout";
                break;

            case RequestFailureReason.ServerDown:
                tryReconnect = ReconnectIsAllowed();
                message      = "server down";
                break;

            case RequestFailureReason.Network:
                tryReconnect = ReconnectIsAllowed();
                message      = "network issue";
                break;

            case RequestFailureReason.ServerRequestedReconnect:
                tryReconnect = ReconnectIsAllowed();
                message      = "server requested reconnect";
                break;

            case RequestFailureReason.Error:
                break;
            }

            if (tryReconnect)
            {
                SetState(ConnectionState.Disconnected, message);
                ReconnectProcess.Begin(args.ForegroundAction, args.OnResume, args.Request, args.FailureReason);
            }
        }
示例#2
0
 private static void OnRequestFailed(object sender, RequestFailureEventArgs e)
 {
     HandleFailedRequest(sender as IWebSocketsClient, e);
 }
示例#3
0
文件: Events.cs 项目: vercas/vProto
        /*protected virtual*/
        void OnRequestFailure(RequestFailureEventArgs e)
        {
            RequestEventHandler<RequestFailureEventArgs> handler = RequestFailure;

            if (handler != null)
            {
                handler(this, client, e);
            }
        }