2

我正在尝试模仿定期令牌刷新。我们的前端中有 JavaScript 代码,它会定期检查是否需要刷新令牌,如果需要,则发出刷新令牌的调用。只要有人在使用该应用程序,它就会每隔几分钟左右运行一次。

我们应用程序的典型用户会在超过令牌生命周期的时间内打开应用程序而不对其进行任何操作。所以我不能简单地检查并在每次调用上执行令牌刷新而不调整脚本以不模仿现实生活中的用法(因为调用需要更频繁地发生)。

任何想法是否或如何可能?

4

1 回答 1

1

好的,我能想出的最佳解决方案本质上是创建自己的“暂停”类,它将长暂停分解为小暂停,并在每次检查之间查看令牌是否需要刷新。大致是这样的:

//new RefreshADToken().create() creates a ChainBuilder that refreshes the token if it's necessary
object PauseHelpers {

  val tooBigOfPauseThreshold = 150 //300 seconds = 5 minutes, so anything over 150 is too big

  def adPause(duration: Int): ChainBuilder = {
    doIfOrElse(duration > tooBigOfPauseThreshold) {
      val iterations = duration / tooBigOfPauseThreshold
      repeat(iterations, "pause_counter") {
        pause(tooBigOfPauseThreshold)
          .exec(new RefreshADToken().create())

      }.pause(duration % tooBigOfPauseThreshold).exec(new RefreshADToken().create())
    } {
      pause(duration).exec(new RefreshADToken().create())
    }
  }
}
//... then
import orhub.modules.actions._

class POC extends Simulation {
//some stuff
  var scn = scenario("poc")
    .feed(hospitalUsersFeeder)
    .exec(session => {
        session.set("env", environment)
    })
    .exec(new ADPause(120 * 60).create())
于 2018-05-23T19:06:31.363 回答