【问题标题】:How to handle Quickblox session expiration?如何处理 Quickblox 会话过期?
【发布时间】:2017-01-02 17:42:31
【问题描述】:

在 quickblox 中,session expires two hours after the last request。所以为了处理这种情况,我使用了代码

config.on.sessionExpired = function(next,retry){
})

并在QB.init中传递了config

config.on.sessionExpired = function(next, retry) {
    console.log("============session renewal")
    var user = self.get('user')
    QB.chat.disconnect()
    QB.createSession({ login: user.login, password: user.pass }, function(err, res) {
        if (res) {
            // save session token
            token = res.token;
            user.id = res.user_id
            self.get('user').token = token
            QB.chat.connect({ userId: user.id, password: user.pass }, function(err, roster) {
                // Do something   
            })
        }
    })
}
QB.init(QBApp.appId, QBApp.authKey, QBApp.authSecret, config);

首先断开聊天,然后创建一个新会话,然后重新连接聊天,这是更新会话的正确方法吗?

我不希望客户知道该会话在 quickblox 中已过期并且他们必须刷新页面。聊天是门户网站的一部分。如果 quickblox 需要 2-3 秒来创建一个新的会话令牌然后连接到聊天,那就没问题了。到那时,我可以显示加载程序或一些消息。

我在没有QB.chat.disconnect() 的情况下尝试过,但它不起作用并给我发送了Unprocessable entity 422 错误。

【问题讨论】:

  • @Daniel 请停止更改括号样式,因为它不会以任何方式改进代码,并且会使问题更长而没有任何收获。这是风格和偏好的问题,不需要编辑。相反,应将问题作为一个整体来关注并解决需要解决的问题。
  • @Shivam 有两种方法可以处理此问题,首先,您使用 QB.chat.disconnect() 并重新初始化用户,其次是检查会话是否可用,如果会话过期,则必须重新初始化它

标签: javascript quickblox


【解决方案1】:

我有同样的问题,我在 QuickBlox Docs 找到了一些解决方案

https://docs.quickblox.com/docs/js-authentication#session-expiration

QuickBlox JavaScript SDK 将自动更新您当前的会话。无需手动调用 createSession() 方法。登录后,会话可用 2 小时。当会话过期时,任何请求方法都会先更新它,然后再执行。

官方文档中的这个例子:

var CONFIG = {
  on: {
    sessionExpired: function(handleResponse, retry) {
      // call handleResponse() if you do not want to process a session expiration,
      // so an error will be returned to origin request
      // handleResponse();

      QB.createSession(function(error, session) {
        retry(session);
      });
    }
  }
};

QB.init(3477, "ChRnwEJ3WzxH9O4", "AS546kpUQ2tfbvv", config);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 2016-05-23
    • 2018-04-29
    • 1970-01-01
    • 2014-08-30
    • 2012-08-02
    • 2014-10-22
    相关资源
    最近更新 更多