使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败

Posted

技术标签:

【中文标题】使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败【英文标题】:Connection failure when using strophe with ejabberd bosh to connect to jid account on localhost 【发布时间】:2012-10-31 20:29:00 【问题描述】:

我已经在我的机器上安装了 ejabberd,它运行良好。

localhost:5280/admin

localhost:5280/http-bind

它还显示“ejabberd mod_http_bind An implementation of XMPP over BOSH (XEP-0206)”我猜它工作正常。

当我尝试与 Strophe 创建连接时,我得到的连接状态为CONNFAIL

我的代码如下:

var conn = new Strophe.Connection('http://localhost:5280/http-bind');
conn.connect(data.jid, data.password, function (status) 

// jid=user@localhost


if(status===Strophe.Status.CONNECTING)

alert('connecting...!!');



if(status===Strophe.Status.AUTHFAIL)

alert('auth failure...!!');



if(status===Strophe.Status.CONNFAIL)

alert('connection falied !!');


我不断收到CONNFAIL

我还在 apache httpd.conf 文件中添加了 proxypass forhttp://localhost:5280/http-bind

我无法找出问题所在。

【问题讨论】:

【参考方案1】:

要调试 ejabberd 是否真的接收到您的 Bosh 请求,请使用 log_level, 5 重新启动 ejabberd(在您的 /etc/ejabberd/ejabberd.cfg 文件中设置它)。然后,当您使用 strophe 连接到 ejabberd 时,请通过执行 tail -f /var/log/ejabberd/ejabberd.log 来查看日志。如果您没有看到任何内容,则意味着您的请求在代理上下文中的某处失败。如果您确实看到了什么,请使用相关日志更新您的问题,以便我们更好地帮助您。

您也可以通过 ejabberd 调试 shell 即时更新 log_level

$ sudo ejabberdctl debug
....
Eshell V5.8.5  (abort with ^G)
(ejabberd@localhost)1> ejabberd_loglevel:set(5).
module,ejabberd_logger
(ejabberd@localhost)2>

注意:我假设ejabberd.cfgejabberd.log 的标准安装路径。如果您有备用安装前缀,请相应地更新路径。

【讨论】:

感谢此调试方法...问题已解决...在 apache 配置中 bosh 的代理存在问题... 啊,你真的应该说出问题所在!有一个非常相似的问题,很想知道适合您的解决方案。

以上是关于使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Strophe 连接到 ejabberd 的 AUTHFAIL 和会话超时

无法使用 strophe 连接到 eJabberd 服务器

使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败

Strophe & Ejabberd:发送消息后重新认证的问题

ejabberd.yml 为 strophe 配置注册一个新用户

XMPP Web 客户端(使用 strophe.js)花时间连接 ejabberd 服务器