Javascript 如何处理Quickblox会话过期?

Javascript 如何处理Quickblox会话过期?,javascript,quickblox,Javascript,Quickblox,在quickblox中。所以为了处理这种情况,我使用了代码 config.on.sessionExpired = function(next,retry){ }) 并在QB.init config.on.sessionExpired = function(next, retry) { console.log("============session renewal") var user = self.get('user') QB.chat.disconnect()

在quickblox中。所以为了处理这种情况,我使用了代码

config.on.sessionExpired = function(next,retry){
})
并在
QB.init

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中的会话已过期,他们必须刷新页面。聊天室是web门户的一部分。如果quickblox需要2-3秒来创建一个新的会话令牌,然后连接到聊天室,则可以。到那时,我可以显示一个加载器或一些消息


我在没有
QB.chat.disconnect()的情况下尝试了它,但它不起作用,并向我发送了
无法处理的实体422
错误。

我也有同样的问题,我在QuickBlox文档中找到了一些解决方案

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);

我也有同样的问题,我在QuickBlox文档中找到了一些解决方案

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);

@Daniel请停止更改括号样式,因为它不会以任何方式改进代码,并且会使问题变得更长而没有任何好处。这是风格和偏好的问题,不需要编辑。相反,把注意力集中在整个问题上,解决需要解决的问题。@Shivam有两种方法来处理这个问题,首先,使用
QB.chat.disconnect()
然后重新初始化用户,第二步是检查每个请求上的会话是否可用。如果会话过期,则必须重新初始化it@Daniel请停止更改括号样式,因为它不会以任何方式改进代码,并且会使问题变得更长而没有任何好处。这是风格和偏好的问题,不需要编辑。相反,将注意力集中在整个问题上,并解决需要解决的问题。@Shivam有两种方法来处理此问题,第一种方法是使用
QB.chat.disconnect()
,然后重新初始化用户,第二种方法是检查会话是否可用,如果会话过期,则必须重新初始化它