Ibm mobilefirst 未调用Worklight客户端超时调用

Ibm mobilefirst 未调用Worklight客户端超时调用,ibm-mobilefirst,Ibm Mobilefirst,我们面临一个客户机超时问题,在这个问题上,失败调用没有被调用 问题如下: 用户在我们的应用程序中单击登录 4秒后,用户可以成功登录应用程序 我们循环使用Web服务服务器,用户需要17秒才能将响应恢复到超时的位置,因为我们已根据客户要求将超时时间设置为10000ms,并且响应会停留在“登录”页面上,不会显示任何错误。在第二次尝试“登录”应用程序时,响应将在4秒后出现,应用程序将正常运行 在超时的情况下,我们需要调用一个失败调用来通知用户发生了错误并超时。但调用未被调用: initOption.js

我们面临一个客户机超时问题,在这个问题上,失败调用没有被调用

问题如下:

  • 用户在我们的应用程序中单击登录
  • 4秒后,用户可以成功登录应用程序
  • 我们循环使用Web服务服务器,用户需要17秒才能将响应恢复到超时的位置,因为我们已根据客户要求将超时时间设置为10000ms,并且响应会停留在“登录”页面上,不会显示任何错误。在第二次尝试“登录”应用程序时,响应将在4秒后出现,应用程序将正常运行
  • 在超时的情况下,我们需要调用一个失败调用来通知用户发生了错误并超时。但调用未被调用:

    initOption.js:

      var wlInitOptions = {
        .
        .
    //  # Worklight server connection timeout
        timeout: 10000,
    //  # Function to handle failure of Request Timeout
        onRequestTimeout : function (error) {
            WL.SimpleDialog.show(
                    "System Error: Request Timeout",
                    error,
                    [{text: "Close", handler: null}]
            );
        },
    .
    .
    };
    
    Worklight 6.2版

    如果需要额外的代码共享,请告诉我

    谢谢

    Edite:

    申请流程:

    一旦用户启动将连接到WL服务器的应用程序,用户将单击登录按钮,该按钮将触发适配器方法“登录”

    登录过程完成后,它将执行另一个调用以获取用户数据并将其提取到设备

    如前所述,当用户单击Login时,应用程序将尝试从适配器调用身份验证功能。我们已经将应用程序等待响应的时间设置为10秒,如上面的coed中所述

    如果应用程序没有得到响应,那么我们需要向用户显示一个带有适当文本的对话框


    如果我将超时时间从10秒增加到30秒,问题就会得到解决。但是,我需要将超时保持10秒,并在超时时向用户显示一个对话框。

    代码中提到的超时值在客户端和服务器之间,但在适配器过程和后端之间还有一个额外的超时;您需要正确同步/对齐/定时这些

    您是否在适配器XML中使用
    requestTimeoutInSeconds


    阅读更多信息:

    当用户单击“登录”按钮时会发生什么?它执行适配器请求还是执行连接()?它不应该连接到连接(由initOptions.js中使用的代码暗示,而不是main.js中的常规onSuccess和onFailure)。这是错误的实现。您需要更好地描述您的应用程序流。我们正在调用身份验证适配器,它执行适配器请求而不是连接()。连接调用通过main.js完成,main.js包含onSuccess和onFailure。客户端的initOptions中有一个超时(在我的例子中是10秒),它将位于设备和WL服务器之间。在WL server中,我的登录函数()有一个适配器超时。我的Web服务需要1.6秒才能响应,这是可行的。一旦我回收Web服务服务器,第一次响应需要17秒,在这种情况下,设备和WL服务器之间的连接已经超时,即使适配器没有超时,用户需要再次单击登录。在这种情况下,如果用户超时,我需要使用WL.SimpleDialog.show显示消息,这不起作用,我不需要用户看到他的设备上的加载指示灯,什么都没有发生。