在quickblox中,session expires two hours after the last request。所以为了处理这种情况,我使用了代码
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);
QB.chat.disconnect()
Unprocessable entity 422
这是更新会话的正确方法吗首先断开聊天,然后先创建新会话,然后再次连接聊天?
我不希望客户端知道会话已在quickblox中过期,他们必须刷新页面。聊天是门户网站的一部分。如果quickblox需要2-3秒来创建新的会话令牌然后连接到聊天,这很好。到那时,我可以显示一个加载器或一些消息。
我在没有{{1}}的情况下尝试了它但是它没有用,并且发送了{{1}}错误。
答案 0 :(得分:0)
我有同样的问题,我在QuickBlox文档中找到了一些解决方案
https://docs.quickblox.com/docs/js-authentication#session-expiration
QuickBlox JavaScript SDK将自动续订您的当前会话。无需手动调用createSession()方法。登录后,一个会话可以使用2个小时。会话期满后,任何请求方法都会先对其进行更新,然后再执行。
以及官方文档中的以下示例:
import sys
if sys.version_info < (3, 7):
raise ImportError("I need python 3.7 or higher to run!")
exec('''
# your entire script
''')