Strophe.js 无法连接到 openfire

Posted

技术标签:

【中文标题】Strophe.js 无法连接到 openfire【英文标题】:Strophe.js does not connect to openfire 【发布时间】:2014-06-17 14:14:05 【问题描述】:

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

它在我的 Nexus 5 (android 4.4.3) 上运行良好,但只要我想在三星 Galaxy S2 (Android 4.1.2) 或三星 Galaxy Tab (GT-P7501 - Android 4.0. 4)我没有得到服务器的任何响应。这是我连接的代码sn-p:

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 访问它。

您知道为什么这不适用于三星银河吗?每一个帮助将不胜感激。提前致谢!

【问题讨论】:

【参考方案1】:

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

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

解决方法:我在strophe.js连接中将静态域名替换为对应的ip地址。

【讨论】:

以上是关于Strophe.js 无法连接到 openfire的主要内容,如果未能解决你的问题,请参考以下文章

在 Angular 6 中连接到 Strophe.js

安装 ssl 证书后 strophe js 无法正常工作

为 Openfire 创建一个外部组件

旁遮普邦并不始终承认它正在从 strophe 获取消息

使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器

使用 Openfire、Javascript (strophe.js) 和 html5 websockets 的聊天客户端?