Xmpp Strophe+;明火连接反复断开

Xmpp Strophe+;明火连接反复断开,xmpp,openfire,strophe,Xmpp,Openfire,Strophe,我使用的是OpenFire3.9.3,并且已经用strope.js创建了网络聊天应用程序。当openfire上的用户数较少时,连接稳定。但是有很多用户在该应用程序上注册。 用户未联机,但我的连接已多次断开。我再次连接on\u disconnected()。连接已建立,但再次断开连接 NetworkError: 404 Invalid SID. - http://127.0.0.1:7070/http-bind/ 是客户端缺陷还是服务器端缺陷? 如何解决这个问题 Openfire通常定期ping

我使用的是OpenFire3.9.3,并且已经用
strope.js
创建了网络聊天应用程序。当openfire上的用户数较少时,连接稳定。但是有很多用户在该应用程序上注册。 用户未联机,但我的连接已多次断开。我再次连接
on\u disconnected()
。连接已建立,但再次断开连接

NetworkError: 404 Invalid SID. - http://127.0.0.1:7070/http-bind/
是客户端缺陷还是服务器端缺陷?
如何解决这个问题

Openfire通常定期ping客户端,以检查客户端是否处于活动状态。当客户端未能在指定的超时内响应时,服务器将推断客户端已断开连接

您得到的错误是page not found错误,这基本上意味着您的侦听端口或网络存在一些问题


但是,由于您使用的是环回地址,因此排除了网络可能性。检查您的服务器端口,因为我(即使代码未提供供参考)认为您的客户端可能没有任何问题。只需确保绑定地址正确无误。

我的代码中也有同样的问题(我使用的是我的Candy Chat版本),问题是我没有及时调用
\u doDisconnect
版本的
\u proto

_doDisconnect: function ()
    {
        this.sid = null;
        this.rid = Math.floor(Math.random() * 4294967295);
        window.sessionStorage.removeItem('strophe-bosh-session');
    },
您必须确保在代码调用Strophe
\u changeConnectStatus
函数以断开连接之前调用了该函数。或者至少设置当前连接
this.sid=null

换句话说,您必须确保Strophe将当前的“sid”值置零,以便下一次ping不发送“sid”或新的(我认为没有,但可能是新的)。如果没有,则即使服务器现在正在断开连接,客户端下一个“发送”ping仍包含旧值。然后服务器给出信息量不大的404错误,这实际上让您知道该连接不再有效(这当然是我首先想要的)。先有鸡还是先有蛋的问题


希望这对解释为什么会出现这种错误有所帮助。Candy Chat的标准版本会在每次连接尝试之前重置所有内容,因此不会出现此问题。

更新客户端的keepalive值。默认值为120秒。

如果我将服务器从Openfire更改为Erlang将解决此问题?我建议您先尝试在Openfire管理控制台中更改ping间隔设置,因为我使用Openfire时,它工作正常。我尝试从默认值360秒更改为5秒10秒,15秒,但仍然得到相同的错误!您是否定期发布您的状态?因为不正确的节还会导致与服务器断开连接。检查presence stanza builder参数,因为我认为这不是Openfire的问题。多亏了您,但Openfire的设置还有另一个缺陷,无论如何解决了这个问题。