1

我正在开发一个聊天应用程序,其中 openfire 作为 xmpp 服务器,strophe.js 作为客户端库,并在 ubuntu 上使用 ruby​​ on rails。

问题是 strophe.js 连接到 openfire 但给出 AUTHFAIL 状态并且不创建任何用户。它总是返回状态 4 (AUTHFAIL)。

openfire 运行在 >> localhost:9090
rails 应用程序运行在 >> localhost:3000
BOSH 服务运行在 >> localhost:7070/http-bind/

代码:-

    <script>
    var BOSH_SERVICE = 'http://localhost:7070/http-bind/';
    var connection = null;

    jQuery('#connect').click(function(){
        connection = new Strophe.Connection(BOSH_SERVICE);
        connection.connect($('#enter_id').get(0).value + "@localhost", null, onConnect);
    });

    function onConnect(status)
    {
        console.log("status is >> " + status);
        if(status == 5){
            console.log("inside if status is >> " + Strophe.Status.CONNECTED);
            console.log("onConnect >> " + status);
       connection.send($pres().tree());
         connection.addHandler(notifyUser, null, 'message', "chat");
      console.log("onConnect >> handler added");
        }

    }



    function notifyUser(msg) 
    {
            console.log("notifyUser >> " + msg);
    //  if (msg.getAttribute('from') == "testuser@127.0.0.1/pingstream") {
            var elems = msg.getElementsByTagName('body');
            var body = elems[0];
            jQuery('#chat_msg').append(Strophe.getText(body));
    //  }
        return true;
    }



    jQuery('#send_msg').click(function(){
        var msg_to_send = $msg({
            to: jQuery('#send_to').val() + "@localhost",
            from: connection.jid,
            type: "chat"
        }).c("body").t("hi!");

        connection.send(msg_to_send.tree());
    });

</script>

请帮忙。

4

2 回答 2

0

@amirinder007 您在代码中提供了错误的服务器名称。我研究了您的代码,发现您提供了localhost127.0.0.1 ,而不是您编写了配置有 openfire 的服务器名称(Hostname),您还可以在 openfire 管理控制台的主页上看到它的名称,例如Mycomputer-pc作为名称个人电脑。

于 2013-07-31T12:28:47.133 回答
0

我猜这里提供的服务器名是错误的。尝试将其设置为hostname使用 openfire 注册的而不是localhost.

于 2013-08-06T15:08:22.500 回答