我在我们网络中的一个服务器上设置了一个openfire服务器,并给它一个域名。我想在phonegap应用程序中通过我的手机连接到它,因此在我的应用程序中实现了一个strophe.js客户机。
它在我的Nexus 5(Android4.4.3)上运行得很好,但只要我想在三星Galaxy S2 (Android4.1.2)或三星Galaxy (GT-P7501-Android4.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访问它。
你知道为什么三星星系不起作用吗?所有的帮助都将受到感谢。提前谢谢!

发布于 2014-06-18 09:35:51
我可以自己“解决”这个问题。这真的不是什么大不了的事,但我花了很长时间(3天)才意识到这一点,所以如果任何人遇到同样的现象,这个信息可能会有所帮助:
在我的例子中,上述服务器和strophe客户端的所有配置都是正确的。事实上,连接不能在所有设备上正常工作的唯一原因似乎是这些设备甚至不能平掉服务器,即使它们位于同一个网络中。在我的例子中,我给了服务器一个静态域名,这是关键问题。不知何故,Google 5能够通过dns服务器解析ip地址,但老三星星系s2和三星星系选项卡都没有。
解决方案:我在连接中用相应的ip-adress替换了静态域名。
https://stackoverflow.com/questions/24266131
复制相似问题