Register XMPP-Account using the Strophe.js-Registe

2019-09-07 17:58发布

问题:

I try to register a xmpp-account using the strophe-register-plugin (https://github.com/metajack/strophejs-plugins/tree/master/register). It works fine with the connection manager from example "http://bosh.metajack.im:5280/xmpp-httpbind" but I can't register the account using the OpenFire connection manager. (Normal login works with both connection managers...)

Connection State Changes are 1 -> 10, thats it. 1 means "connecting" but i dont know what 10 means...

var connection = new Strophe.Connection(
//          "http://bosh.metajack.im:5280/xmpp-httpbind");
        "http://localhost/http-bind");

var callback = function (status) {alert(status);
    if (status === Strophe.Status.REGISTER) {
        connection.register.fields.username = "fghdfhg";
        connection.register.fields.name = "dfgfdgfdg";
        connection.register.fields.password = "dfddfgfdg";
        connection.register.submit();
    } else if (status === Strophe.Status.REGISTERED) {
        console.log("registered!");
        connection.authenticate();
    } else if (status === Strophe.Status.CONNECTED) {
        $(document).trigger('connected');
    } else if (status === Strophe.Status.DISCONNECTED) {
        console.log("Disconnected from XMPP-Server");
    }
};

//    connection.connect(data.jid, data.password, callback);
connection.register.connect("xyz.com", callback, 60, 1);

回答1:

There is a workaround for this situation: https://stackoverflow.com/a/10437474 and a bug issue: https://github.com/metajack/strophejs-plugins/issues/93



回答2:

in strophe.register.js go to line no 215 and make change as per below code.

 /*if (register.length === 0) {
            that._changeConnectStatus(Strophe.Status.REGIFAIL, null);
            return;
        } else */
this.enabled = true;

Try above one.