我在我的机器上安装了ejabberd并且运行正常。
localhost:5280/admin
localhost:5280/http-bind
它还显示“ejabberd mod_http_bind 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文件中为http://localhost:5280/http-bind
添加了proxypass。
我无法弄清问题是什么。
答案 0 :(得分: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
的标准安装路径。如果您有备用安装前缀,请相应地更新路径。