diff --git a/lib/handlers.js b/lib/handlers.js index 50c6fa8..8507062 100644 --- a/lib/handlers.js +++ b/lib/handlers.js @@ -85,7 +85,7 @@ handlers[WAMP.CALL] = function (session, args) { var callId = args.shift(); var options = args.shift(); var procUri = args.shift(); - args = args || []; + args = args.shift() || []; var resultCallback = function(err, args) { if (err) { var msg = [ @@ -109,7 +109,7 @@ handlers[WAMP.CALL] = function (session, args) { session.send(msg); } }; - if (!this.callrpc(procUri, args, resultCallback)) { + if (!this.callrpc(procUri, args, resultCallback, session)) { var msg = [ WAMP.ERROR, WAMP.CALL, diff --git a/lib/router.js b/lib/router.js index 3257148..f1319d6 100644 --- a/lib/router.js +++ b/lib/router.js @@ -77,11 +77,17 @@ function Router(options) { this.emit('RPCUnregistered', [uri]) }; - this.callrpc = function(uri, args, callback) { + this.callrpc = function(uri, args, callback, session) { if (typeof this.getrpc(uri) !== 'undefined') { var invId = tools.randomId(); _pending[invId] = callback; - this.getrpc(uri).apply(this ,[invId, args]); + args.unshift(invId); + + if (session) { + args.push(session); + } + + this.getrpc(uri).apply(this ,args); return true; } else { return false; diff --git a/lib/session.js b/lib/session.js index 53dfef4..37baaff 100644 --- a/lib/session.js +++ b/lib/session.js @@ -17,6 +17,9 @@ function Session (router, wsclient) { "] " + msg; log.trace(trace); }.bind(this); + + this.client = wsclient; + this.register = function (uri) { var registrationId = util.randomId(); _registeredUris[registrationId] = uri;