Strophe + Openfire连接重复断开连接

时间:2014-11-07 07:03:27

标签: xmpp openfire strophe

我正在使用 Openfire 3.9.3 ,并使用strope.js创建了网络聊天应用程序。当 openfire 上的用户数量较少时,连接稳定。但是在该应用上注册了很多用户。    用户不在线仍然重复断开连接我再次连接on_disconnected()。建立连接,但再次与

断开连接
NetworkError: 404 Invalid SID. - http://127.0.0.1:7070/http-bind/

是客户端缺陷还是服务器端缺陷? 怎么解决这个?

3 个答案:

答案 0 :(得分:2)

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

您获得的错误是找不到页面错误,这基本上意味着您的侦听端口或网络存在问题。

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

答案 1 :(得分:0)

我的代码中遇到了同样的问题(我正在使用我的Candy Chat版本),问题是我没有及时调用BOSH _proto版本的_doDisconnect

_doDisconnect: function ()
    {
        this.sid = null;
        this.rid = Math.floor(Math.random() * 4294967295);
        window.sessionStorage.removeItem('strophe-bosh-session');
    },

在代码调用Strophe _changeConnectStatus函数进行断开连接之前,必须确保调用此函数。或者至少设置当前连接this.sid = null

换句话说,你必须确保Strophe使当前的“sid”值为空,以便下一个ping不发送“sid”或新的(我认为没有,但可能是新的)。如果没有,即使服务器现在断开连接,您的客户端下一步“发送”ping也会包含旧值。然后服务器给出了非常有用的404错误,这实际上是让你知道那个连接不再有效(这当然是我想要的第一个)。排在第一位的是鸡肉或鸡蛋问题。

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

答案 2 :(得分:0)

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

相关问题