Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including strophejs-plugin-register with all npm packages installed. Try it out:

var strophejsPluginRegister = require("strophejs-plugin-register")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

strophejs-plugin-register v0.0.1

A Strophe.js plugin for in-band registration (XEP-0077)


A Strophe Plugin for In-Band Registration. ( XEP 0077 )


Just link the register plugin below the strophe library in your HTML head section:

<!-- ... -->
<script type="text/javascript" src="strophe.min.js"></script>
<script type="text/javascript" src="strophe.register.js"></script>
<!-- ... -->

To register a JID you need to listen for REGISTER und REGISTERED in your connection callback and use connection.register.connect() instead of connection.connect().

On REGISTER you need to inspect the connection.register.fields object, fill in every field and call connection.register.submit(). (There may be more fields than username and password!)

On REGISTERED you can can then call connection.authenticate() if you want to login normally with the account you just created.

You should also listen for CONFLICT, REGIFAIL and NOTACCEPTABLE to catch failure-status of registrations.

Example for registering a new account and logging in with it:

var callback = 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
    } else if (status === Strophe.Status.REGISTERED) {
        // calling login will authenticate the registered JID.
    } 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

connection.register.connect("", callback, wait, hold);

After that you're logged in with a fresh jid.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free