我很难让 strophe 的“attach()”函数正常工作。
我正在开发一个社交网络,用户可以在其中浏览网页,同时保持聊天连接。我不想在每个页面上重新连接/重新授权,因此根据此链接 http://groups.google.com/group/strophe/browse_thread/thread/430da5e788278f3a/93c48c88164f382f?show_docid=93c48c88164f382f&fwc=1 ,我将 SID 和 RID 存储到卸载时的 cookie 中。
在下一页上,当我尝试使用新的 SID 和 RID(将其增加 1 后)时,我的 session 已被破坏。 Ejabberd 报告“HTTP put 错误。原因:bad_key”
WTF正在发生?
最佳答案
如果没有来自 ejabberd 或 Firebug 的更多日志信息,这将很难诊断。正确的 RID 是否实际存储在 cookie 中? ejabberd 认为你发送的最后一个节是什么,它有什么 RID 值?新页面的第一节和第一个 RID 值是什么?这两节间隔多久?
更新: session 被取消的原因是 BOSH 的安全模型。实际上,SID 和 RID 对是 secret 的。如果您知道这对,您可以附加到 session 。为了让人们能够猜测,RID 是从一个非常大的空间中随机选取的。如果您在当前 RID 的一个非常小的窗口之外发送 RID,它将断开 session 。窗口通常是 (RID, RID + 5) 左右。
关于javascript - Strophe attach 和 Ejabberd 的 session 恢复问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2616429/