除非我触发我的连接回调两次,否则使用 strophe attach() 而不是 connect() 不起作用

Posted

技术标签:

【中文标题】除非我触发我的连接回调两次,否则使用 strophe attach() 而不是 connect() 不起作用【英文标题】:Using strophe attach() instead of connect() doesn't work unless I trigger my connected callback twice 【发布时间】:2012-05-13 21:33:10 【问题描述】:

我正在使用韵律 XMPP 服务器并尝试“使用 javascript 和 jQuery 进行专业 XMPP 编程”中的第 3 章示例。它基本上是 ping - pong 的例子,它工作正常。问题是当我尝试修改此示例以在 cookie 中存储 jid、sid 和 rid 以使用此数据在页面重新加载时调用 strophie attach() 而不是 connect()。如果我一个接一个地执行两个或多个 ping,我的示例非常有效,如果我只执行一个服务器不返回任何内容。这是我的代码:

整个Javascript代码是here

问题是当我在on_connect 函数中执行两次$(document).trigger('connected'); 时,status === Strophe.Status.ATTACHED我收到了两个 ping,并且 pong 处理程序被触发了两次。当我只触发一次 ping 时,不会调用 pong 处理程序。

提前致谢。

【问题讨论】:

【参考方案1】:

当您attach()时,您的车牌号码必须加一 在您的代码中进行此更改:

Hello.connection.attach(data.jid, data.sid, parsInt(data.rid,10)+1, Hello.on_connect);

【讨论】:

你能告诉我你的 jid 是什么你的 username@domain/somestring 或一些像 eb0c2093@192.168.2.135/eb0c2093 这样不可读的东西吗?

以上是关于除非我触发我的连接回调两次,否则使用 strophe attach() 而不是 connect() 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在页面卸载 strophe.js 发送请求两次!为啥?

除非在视图上手动更新,否则不会自动触发视图上的更新触发器

Strophe MUC 邀请拒绝处理程序未触发

订阅的节会触发回调吗?

Strophe + Openfire 连接反复断开

strophe 无法通过 websocket 连接 openfire