Basic Registrations

As a default, registrations use exact matching, i.e. a callee which registers a procedure URI com.myapp.procedure1 will receive calls for com.myapp.procedure1 only. There are, however, also pattern-based registrations which can be selected via an option when registering.

Further, as a default only a single registration for a URI is allowed, i.e. once one component has registered a procedure for an URI com.myapp.topic1, all further attempts to register a procedure for this URI will be rejected. There are, however, shared registrations which can be seleted via an option when registering.

Here’s an example for a simple registration in JavaScript using Autobahn|JS:

session.register("com.myapp.procedure1", procedure1);

This is equivalent to

session.register("com.myapp.procedure1", procedure1, { match: "exact", invoke: "single" })

Returning a Promise

A lot of functions that you register will just return synchronously, but when code within your function runs asynchronously, you can return a promise from the function, which is then resolved once the async code has finished. Here is an example for JavaScript, using Autobahn|JS and its default promises library (when.js):

function procedure1 (args, kwargs, details) {

    var d = autobahn.when.defer();

    setTimeout(function() {
       d.resolve("async finished");
    }, 1000);

    return d.promise;
}