53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
try {
|
|
var autobahn = require('autobahn');
|
|
var when = require('when');
|
|
} catch (e) {
|
|
// when running in browser, AutobahnJS will
|
|
// be included without a module system
|
|
var when = autobahn.when;
|
|
}
|
|
|
|
var connection = new autobahn.Connection({
|
|
url: 'ws://127.0.0.1:8080/ws',
|
|
realm: 'realm1'}
|
|
);
|
|
|
|
connection.onopen = function (session) {
|
|
|
|
// a "fast" function or a function that returns
|
|
// a direct value (not a promise)
|
|
function square(x) {
|
|
return x * x;
|
|
}
|
|
|
|
session.register('com.math.square', square);
|
|
|
|
|
|
// simulates a "slow" function or a function that
|
|
// returns a promise
|
|
function slowsquare(x) {
|
|
|
|
// create a deferred
|
|
var d = when.defer();
|
|
|
|
// resolve the promise after 1s
|
|
setTimeout(function () {
|
|
d.resolve(x * x);
|
|
}, 1000);
|
|
|
|
// need to return the promise
|
|
return d.promise;
|
|
}
|
|
|
|
session.register('com.math.slowsquare', slowsquare).then(
|
|
function (registration) {
|
|
console.log("Procedure registered:", registration.id);
|
|
},
|
|
function (error) {
|
|
console.log("Registration failed:", error);
|
|
}
|
|
);
|
|
};
|
|
|
|
connection.open();
|