Strophe.js没有连接到openfire

时间:2014-06-17 14:14:05

标签: android cordova xmpp openfire strophe

我在网络中的服务器上设置了一个openfire服务器并为其提供了域名。我想通过我的手机在phonegap应用程序中连接到它,因此在我的应用程序中实现了strophe.js客户端。

它在我的Nexus 5(Android 4.4.3)上工作正常,但我想在我的三星Galaxy S2(Android 4.1.2)或三星Galaxy Tab(GT-P7501 - Android 4.0)上运行它。 4)我没有收到服务器的任何回复。这是我的连接的代码片段:

var BOSH_SERVICE = 'http://SERVERNAME:7070/http-bind/';
var connection = null;

$(document).ready(function () {
    connection = new Strophe.Connection(BOSH_SERVICE);
    connection.rawOutput = log;
    connection.rawInput = log;
    connection.connect('id@servername/resource', 'test', onConnect);
});

function log(msg) {
    console.log(msg);
}
function rawInput(data) {
    log('RECV: ' + data);
}
function rawOutput(data) {
    log('SENT: ' + data);
}

控制台日志将是:

SENT: <body rid='367573377' xmlns='http://jabber.org/protocol/httpbind' to='servername' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>

这将重复几次,但我没有收到任何传入的消息。服务器版本号是openfire 3.9.3。由于所有这些代码都适用于我的nexus 5,我认为代码是正确的。我也怀疑我的服务器配置错误,但我最后还包含了openfire服务器配置设置的屏幕截图。 openfire xmpp服务器在Windows服务器上运行,我通过wifi / dyndns访问它。

你有什么想法为什么这对三星星系不起作用?我们将不胜感激。提前谢谢!

openfire http bind settings

1 个答案:

答案 0 :(得分:1)

我可以自己“解决”这个问题。这真的不是什么大不了的事,但我花了很长时间(3天)才意识到这一点,所以万一有人会遇到相同的现象,这些信息可能有所帮助:

在我的情况下,服务器的所有配置和上面的strophe客户端都是正确的。实际上,连接在所有设备上无法正常工作的唯一原因似乎是这些设备甚至无法ping服务器,即使它们位于同一网络中。在我的情况下,我给服务器一个静态域名,这是关键问题。不知何故,谷歌Nexus 5能够通过dns服务器将此名称解析为ip地址,但是老三星galaxy s2和三星galaxy tab都没有。

解决方案:我用strophe.js连接中的相应ip-adress替换了静态域名。