【发布时间】: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