56 lines
1.2 KiB
JavaScript
56 lines
1.2 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: 'crossbardemo'}
|
|
);
|
|
|
|
connection.onopen = function (session) {
|
|
|
|
function longop(args, kwargs, details) {
|
|
|
|
var n = args[0];
|
|
var interval_id = null;
|
|
|
|
if (details.progress) {
|
|
var i = 0;
|
|
details.progress([i]);
|
|
i += 1;
|
|
interval_id = setInterval(function () {
|
|
if (i < n) {
|
|
details.progress([i]);
|
|
i += 1;
|
|
} else {
|
|
clearInterval(interval_id);
|
|
}
|
|
}, 1000);
|
|
}
|
|
|
|
var d = when.defer();
|
|
|
|
setTimeout(function () {
|
|
d.resolve(n);
|
|
}, 1000 * n);
|
|
|
|
return d.promise;
|
|
}
|
|
|
|
session.register('com.myapp.longop', longop).then(
|
|
function (registration) {
|
|
console.log("Procedure registered:", registration.id);
|
|
},
|
|
function (error) {
|
|
console.log("Registration failed:", error);
|
|
}
|
|
);
|
|
};
|
|
|
|
connection.open();
|