无法使用 HTTP 绑定连接到 XMPP 服务器(openfire)

Posted

技术标签:

【中文标题】无法使用 HTTP 绑定连接到 XMPP 服务器(openfire)【英文标题】:Can't connect to XMPP server (openfire) with HTTP binding 【发布时间】:2013-04-18 13:30:31 【问题描述】:

我正在尝试学习 XMPP 协议以使用它制作 Web 应用程序。

所以,我安装了一个名为 openfire 的 XMPP 守护程序,我将其配置为支持 HTTP-Bind,我可以使用 Pidgin 和默认的 XMPP 协议连接到它。

问题是我无法使用 HTTP 绑定连接到它。在 pidgin 中,当我连接到指定我想用来连接到服务器的方法时,我有一些选项。如果我将其设置为使用 HTTP-Bind 进行连接,则会失败并显示以下消息:No session id given。

在客户端,我会使用 Strophejs 尝试建立这种连接,但它也不起作用。我有这样的事情:

var conn = new Strophe.Connection("http://chat.dev/http-bind");

http://chat.dev/http-bind 是 XMPP 守护程序的位置。我已将此位置转发到 apache 虚拟主机中的正确端口上,因此 http://chat.dev/http-bind 将指向与 http://127.0.0.1:7070 相同的东西。

conn.connect("test5", "test5", some_callback);

function some_callback(status)

if (status == Strophe.Status.CONNECTING) 
    console.log('Strophe is connecting.');
 else if (status == Strophe.Status.CONNFAIL) 
    console.log('Strophe failed to connect.');  
 else if (status == Strophe.Status.DISCONNECTING) 
    console.log('Strophe is disconnecting.');
 else if (status == Strophe.Status.DISCONNECTED) 
    console.log('Strophe is disconnected.');
 else if (status == Strophe.Status.CONNECTED) 
    console.log('Strophe is connected.');
 // connection.disconnect();

 

这将返回:“Strophe 正在连接。”

嗯,我不知道答案,我一直在读一本关于 XMPP 和 Strophe 的书,但这本书没有涵盖这方面,而且我找到的文档也对我没有帮助。

谢谢。

【问题讨论】:

在我看来,OpenFire 没有正确配置为使用 BOSH 和 HTTP 绑定。 如何检查是否属实? 请告诉我们更多关于您的设置的信息。您的 Openfire 守护程序是否与您的 Web 服务器在同一主机/IP 上运行?您将 Openfire 配置为在哪个端口上侦听传入的 BOSH 连接?您是否正在加载 Strophe flxhr 插件?您是否可以通过指向http://chat.dev:9090 在浏览器中加载 Openfire 管理界面? 我可以访问chat.dev:9090,我可以登录介绍管理面板。我不使用 flxhr。 【参考方案1】:

试试这个- var conn = new Strophe.Connection("http://chat.dev/http-bind/");

需要把'/'放在最后。为我工作。

【讨论】:

以上是关于无法使用 HTTP 绑定连接到 XMPP 服务器(openfire)的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 aSmack 连接到本地 XMPP 服务器

Jabber-Net 发布版本无法连接到 XMPP 服务器

无法使用 react-native-xmpp 连接到 Ejabberd 服务器

无法将 Gloox Xmpp 客户端连接到 Openfire 服务器

无法将我的应用服务器连接到 FCM XMPP 服务器

PHP 无法连接到端口 5222 上的 localhost XMPP 服务器