使用 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.cfg
和ejabberd.log
的标准安装路径。如果您有备用安装前缀,请相应地更新路径。
【讨论】:
感谢此调试方法...问题已解决...在 apache 配置中 bosh 的代理存在问题... 啊,你真的应该说出问题所在!有一个非常相似的问题,很想知道适合您的解决方案。以上是关于使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败的主要内容,如果未能解决你的问题,请参考以下文章
使用 Strophe 连接到 ejabberd 的 AUTHFAIL 和会话超时
使用 strophe 和 ejabberd bosh 连接到 localhost 上的 jid 帐户时连接失败
Strophe & Ejabberd:发送消息后重新认证的问题