我在使strophe的'attach()'功能正常工作时遇到了很多困难。
我正在建立一个社交网络,用户可以浏览网页,同时保持聊天连接。我不想在每个页面上重新连接/重新授权,因此根据此链接http://groups.google.com/group/strophe/browse_thread/thread/430da5e788278f3a/93c48c88164f382f?show_docid=93c48c88164f382f&fwc=1,我将SID和RID存储到cookie onunload中。
在下一页上,当我尝试使用新的SID和RID(在将其递增1之后)时,我的会话已被销毁。 Ejabberd报告“HTTP放置错误。原因:bad_key”
WTF正在发生?
答案 0 :(得分:6)
如果没有来自ejabberd或Firebug的更多日志记录信息,这将难以诊断。实际存储在cookie中的RID是否正确? ejabberd认为你发送的最后一节是什么,它有什么RID价值?新页面上的第一个节和第一个RID值是什么?这两节之间有多长时间了?
更新:会话取消的原因是由于BOSH的安全模型。实际上,SID和RID对是秘密的。如果您知道该对,则可以附加到会话。为了使人们能够猜测,RID是从非常大的空间中随机挑选的。如果从当前RID向非常小的窗口发送RID,它将断开会话连接。窗口通常是(RID,RID + 5)左右。
答案 1 :(得分:1)
我设法解决了这个问题。
在页面加载之间,rid被双倍递增。只有在会话附加开始工作时才增加它。
我不知道为什么会议被取消了,但是发生了什么:
任何线索?