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

Posted

技术标签:

【中文标题】使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器【英文标题】:Connect to Prosody XMPP server using Strophe js (CONNFAIL) 【发布时间】:2015-08-07 19:28:08 【问题描述】:

我在 example.com 上设置了韵律服务器。我可以使用带有 url http://example.com:5280/http-bind 的 pidgin 连接到 bosh 服务,也可以在浏览器上使用相同的 url 回复:

有效!现在将您的 BOSH 客户端指向此 URL 以连接到 韵律。

有关更多信息,请参阅 Prosody:设置 BOSH。

现在我正在尝试使用以下命令

new Strophe.Connection("http://example:5280/http-bind/").connect("admin@example.com", "123456", callback);

其中回调是fuction(status) 我用来记录连接。回调的状态首先是Strophe.CONNECTING,然后是Strophe.CONNFAIL

我在韵律上启用了调试日志级别,/var/log/prosody/prosody.debug 没有添加新条目(它在 pidgin 上运行良好)。

另外,我通过在 apache2 虚拟主机上添加以下行来修复代理

<Location /http-bind>
    Order allow,deny
    Allow from all
</Location>
RewriteEngine On
RewriteRule ^/http-bind$ http://example.com:5280/http-bind [P,L]

我注意到在 pidgin 上我必须启用 plain-text 身份验证才能使其正常工作,并且我在 /etc/prosody/prosody.cfg.lua 上有以下设置(我有更多但这些似乎相关)

c2s_require_encryption = false
s2s_secure_auth = false
authentication = "internal_plain"

还有以下 BOSH 设置

consider_bosh_secure = true
cross_domain_bosh = true

起初,我认为问题出在加密上,但是,由于没有日志条目,我迷路了。你知道问题可能是什么吗,你认为我应该提供更多信息吗?

【问题讨论】:

【参考方案1】:

"http://example:5280/http-bind/""http://example.com:5280/http-bind" 不是同一个 URL。您应该删除尾部斜杠。

【讨论】:

删除尾部斜杠没有效果。但是,在使用 firebug 进行了一些调试后,我发现了一条关于 CORS 请求被阻止的警告,因此我将对此进行调查。

以上是关于使用 Strophe js (CONNFAIL) 连接到 Prosody XMPP 服务器的主要内容,如果未能解决你的问题,请参考以下文章

通过 Bosh 进行的 Openfire 带内注册无法与 Strophe/Strophe.register.js 一起使用

使用 Xmpp、strophe.js 进行聊天应用

将 Strophe.js 与 React Native 一起使用

当用户同一用户多次登录时,strophe.js 不调用断开连接

使用 Strophe.js 建立 WebSocket 连接

使用 Strophe.js 名册插件和 Ejabberd 接收“订阅”状态