Encapsulates crossbar publish/subscribe and register/unregister/call functionality into a facade, easier to use and reason about.
- Version:
-
- 1.2.0
- Source:
Methods
-
<inner> call(rpcName, args)
-
Calls the RPC with the given name, providing the given arguments.
Resolves if it succeeds, rejects otherwise.Parameters:
Name Type Argument Description rpcName
string The name of the RPC we wish to call.
args
Object <repeatable>
Variable number of arguments we wish to
pass.- Source:
Returns:
- Type
- Promise
Examples
//Assuming we have previously connected and registered the RPC "hello" const hello = () => { console.log("Hello World"); }; crossbar.call("hello") .then(() => console.log("great success!")) .catch(console.log);
//Assuming we have previously connected and registered the RPC "add" const add = (n1, n2) => n1 + n2; crossbar.call("add", 1, 2) .then(sum => console.log(`sum is: ${sum}`)) .catch(console.log);
-
<inner> connect( [connectOpts])
-
Connects this instance to the given direction.
Resolves if a connection is established and opened successfully.
If it fails to open the connection, it rejects with a reason and an optional details object.Parameters:
Name Type Argument Description connectOpts
Object <optional>
Connection object with the
options to connect.
The provided Object must have both
anurl
and a
realm
properties to
properly connect or else it fails.
If no object is passed, the
function will use the default object.Properties
Name Type Argument Default Description url
string <optional>
"ws://localhost:8080/ws" The connection 'url' as described in autobahn connection options.
realm
string <optional>
"realm1" The connection 'realm' as described in autobahn connection options.
- Source:
- See:
Returns:
- Type
- Promise
Examples
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.connect() .then(() => console.log("Great Success!")) .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); });
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); const connectParams = {url: "myURL", realm: "Lovecraft"}; crossbar.connect(connectParams) .then(() => console.log("Great Success!")) .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); });
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.setOpts({ connect: { url: "myURL", realm: "Lovecraft" } }); crossbar.connect() .then(() => console.log("Great Success!")) .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); });
-
<inner> disconnect( [reason] [, message])
-
Closes the crossbar connection. Resolves once the connection is closed or rejects if there was an error closing.
Parameters:
Name Type Argument Default Description reason
string <optional>
"wamp.goodbye.normal" WAMP URI providing a closing reason e.g. 'com.myapp.close.signout' to the server side.
message
string <optional>
Human-readable closing message.
- Source:
Returns:
- Type
- Promise
Examples
//imagine we have previously connected crossbar.disconnect() .then(() => console.log("disconnected!")) .catch(console.log);
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.connect() .then(() => console.log("connected!")) .then(() => crossbar.disconnect("com.myapp.close.signout", "client does not like our service !!!!")) .then(() => console.log("disconnected!")) .catch(console.log);
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.disconnect() .catch(console.log); //error, we never connected in the first place!
-
<inner> getConnection()
-
Returns the current autobahn.Connection object.
- Source:
- See:
Returns:
- Type
- Connection
Example
//Assuming we have previously connected const conn = crossbar.getConnection();
-
<inner> getOpts()
-
Returns a clone of the options object.
- Source:
Returns:
- Type
- options
Example
let opts = crossbar.getOpts(); opts = {}; //this wont alter the object being used in crossbarjs
-
<inner> getSession()
-
Returns the current autobahn.Session object.
Ideally you shouldn't need to use it with the current interface, but in case you need you can have direct access to it.- Source:
- See:
Returns:
- Type
- Session
Example
//Assuming we have previously connected const session = crossbar.getSession(); console.log(`Session id is: ${session.id}`);
-
<inner> onClose(fun)
-
Hook for when the connection closes. This usually happens when crossbar itself dies or closes its connections.
The passed function will receive 2 parameters,reason
, a human readable reason for why the connection was closed, and a second optional parameterdetails
, an object containing the details of why the connection was closed. This second parameter is not always passed.Parameters:
Name Type Description fun
function The function to be called when a connection closes.
- Source:
Throws:
-
If
fun
is not a function. - Type
- TypeError
Example
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.connect() .then(() => crossbar.onClose(console.log)) //if crossbar dies, this gets fired .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); });
-
<inner> onError(fun)
-
Hook for when an error occurs. Errors may occur when crossbarjs is attempting automatic reconnection or becasue some other component failed.
The passed function will receive theerror
as a parameter.Parameters:
Name Type Description fun
function The function to be called when an Error occurs.
- Source:
Throws:
-
If
fun
is not a function. - Type
- TypeError
Example
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.onRecover(error => console.log(`Got error: ${error}`));
-
<inner> onOpen(fun)
-
Hook for when the connection opens. This usually happens when the application first connects to crossbar and when the connection is lost and later on recovered.
The passed function will receive no parameters.Parameters:
Name Type Description fun
function The function to be called when a connection opens.
- Source:
Throws:
-
If
fun
is not a function. - Type
- TypeError
Example
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.onOpen(() => console.log("I'm alive!")); crossbar.connect() .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); });
-
<inner> onRecover(fun)
-
Hook for when the connection recovers. A connection recovers when it has closed unexpectadly and then reconnects activating the recover proceaduer, that re-subscribes and re-registers any calls previously done automatically.
The passed function will receive no parameters.Parameters:
Name Type Description fun
function The function to be called when a connection recovers.
- Source:
Throws:
-
If
fun
is not a function. - Type
- TypeError
Example
const crossbarjs = require("crossbarjs"); const crossbar = crossbarjs(); crossbar.onRecover(() => console.log("I'm back baby!")); crossbar.connect() .catch((reason, details) => { console.log(`Failed becasue ${reason}: ${JSON.stringify(details)}`); }); //kill crossbar //start crossbar //message should appear
-
<inner> publish(topic, params)
-
Publishes the given topic with the given list of variable parameters.
Resolves if it succeeds, rejects otherwise.Parameters:
Name Type Argument Description topic
string The topic of the message.
params
Object <repeatable>
The parameters that the subscribed
functions will receive.- Source:
Returns:
- Type
- Promise
Example
//Assuming we are already connected crossbar.publish("add", 1, 2) .then(() => console.log("Published!")) .catch(console.log);
-
<inner> register(args)
-
Registers the given RPCs, biinding each RPC to a name.
It can either register a single RPC, or an array of RPC objects.
Resolves if all RPCs were registered successfully or rejects if one of them fails.Parameters:
Name Type Description args
string | Array.<RPC> It can either receive two arguments,
a string and a function, to register
one RPC, or it can receive an array of
RPC objects, to register them all.- Source:
Returns:
- Type
- Promise
Examples
//Assuming we have previously connected const myHello = () => { console.log("Hello World"); } crossbar.register("hello", myHello) .then(() => console.log("great success!")) .catch(console.log);
//Assuming we have previously connected const myHello = () => { console.log("Hello World"); } const myGoodbye = () => { console.log("Goodbye World!"); }; const RPCs = [ { name: "hello" , func: myHello }, { name: "bye" , func: myGoodbye } ]; crossbar.register(RPCs) .then(() => console.log("great success!")) .catch(console.log);
-
<inner> setOpts(newOpts)
-
Concatenates the given options object with the current one.
This is the only way to change theoptions
object.Parameters:
Name Type Description newOpts
Object The options we want to add.
- Source:
- See:
-
- {options}
Example
crossbar.setOpts({ publish: { some options } }); console.log(JSON.stringify(crossbar.getOpts())); //will print //{ // connect: { // "url": "ws://localhost:8080/ws", // "realm": "realm1" // }, // publish: { some options }, // subscribe: {}, // call: {}, // register: {} //}
-
<inner> setOptsDefault()
-
Resets the options object to its default state.
- Source:
- See:
-
- {options}
-
<inner> subscribe(topic, callback)
-
Subscribes to the given topic, executing the function every time crossbar receives a message.
Resolves if the subscription was successful, rejects otherwise.Parameters:
Name Type Description topic
string The topic to wich we want to subscribe.
callback
function The function to execute every time we
receive a message.- Source:
Returns:
- Type
- Promise
Example
//Assuming we are already connected const myAdd = (n1, n2) => n1 + n2; crossbar.subscribe("add", myAdd); .then(() => console.log("Subscribed!")) .catch(console.log);
-
<inner> unregister(args)
-
Unregisters the RPC with the given name, or all the RPCs with the names provided in the array.
Returns a promise once all RPCs have be unregistered successfully or rejects if one of them fails.Parameters:
Name Type Argument Description args
string <repeatable>
The names of the RPCs to unregister
- Source:
Returns:
- Type
- Promise
Examples
//Assuming we have previously connected and registered "hello" crossbar.unregister("hello") .then(() => console.log("great success!")) .catch(console.log);
//Assuming we have previously connected and registered the RPCs with the given names crossbar.unregister("hello", "bye") .then(() => console.log("great success!")) .catch(console.log);
-
<inner> unsubscribe(topic)
-
Unsubscribes from the given topic. Resolves if successful,
rejects otherwise.Parameters:
Name Type Description topic
string The topic to which we want to unsubscribe.
- Source:
Returns:
- Type
- Promise
Example
//Assuming we are already connected crossbar.unsubscribe("add"); .then(() => console.log("Unsubscribed!")) .catch(console.log);