通过Bosh的Openfire带内注册不与Strophe / Strophe.register.js合作

时间:2014-09-18 15:18:45

标签: xmpp registration openfire strophe bosh

我之前曾问过类似ejabberd的问题,但是ejabberd提出了其他问题,所以我改用了openfire。为了不使原始问题混乱,我决定创建一个新问题,因为这个问题与openfire有关,并且与我与ejabberd的问题不同。

所以,问题就在这里:

我有一个strophe.js xmpp客户端,它连接到在Amazon云上运行的openfire 3.10.0 alpha服务器。我需要3.10.0 alpha而不是3.9.3,因为前者包含了一个bfix,但不包括后者。无论如何,因为这是一个strophe客户端,我启用了bosh,我可以看到它在myAWSDNS.com上运行:7070。我能够通过我的客户端使用这个bosh服务和现有帐户连接到服务器,并来回发送消息,因此它似乎正常运行。

我还想添加带内注册,我使用strophe.register.js

这是我用于此的代码:

 var tempConn = new Strophe.Connection("http//myAWSDNS.com:7070/http-bind/");
    tempConn.register.connect("myAWSDNS.com", function (status) {
    if (status === Strophe.Status.REGISTER) {
        // fill out the fields
        connection.register.fields.username = "juliet";
        connection.register.fields.password = "R0m30";
        // calling submit will continue the registration process
        connection.register.submit();
    } else if (status === Strophe.Status.REGISTERED) {
        console.log("registered!");
        // calling login will authenticate the registered JID.
        connection.authenticate();
    } else if (status === Strophe.Status.CONFLICT) {
        console.log("Contact already existed!");
    } else if (status === Strophe.Status.NOTACCEPTABLE) {
        console.log("Registration form not properly filled out.")
    } else if (status === Strophe.Status.REGIFAIL) {
        console.log("The Server does not support In-Band Registration")
    } else if (status === Strophe.Status.CONNECTED) {
        // do something after successful authentication
    } else {
        // Do other stuff
    }
});

这似乎工作正常,因为它进入第一个if-bracket (status === Strophe.Status.REGISTER),并尝试设置connection.register.fields.username = "juliet";

但是,在这里,当执行该行时,它会跳转到strophe.js第2476行:

if (this.connect_callback) {
        try {
            this.connect_callback(status, condition);
        } catch (err) {
            Strophe.error("User connection callback caused an " +
                          "exception: " + err);
        }
    }

其中2476是catch(err) { ...... }括号中的代码。

如果我检查err,这就是我得到的:enter image description here

所以消息:connection is not defined,显然,regstration不起作用,我不知道为什么。有人对此有任何意见吗?

谢谢,最诚挚的问候,

克里斯

1 个答案:

答案 0 :(得分:2)

您可能不喜欢这个答案...... connection == undefined的原因是因为您将其命名为tempConn