我正在使用javascript库连接到托管在控制台应用中的signalR服务器。
因此我连接并设置了可以从服务器调用的客户端方法,如下所示:
var connection = $.hubConnection('http://localhost:8080'),
proxy = connection.createHubProxy('TestApp');
proxy.on('sendMessage', function () {
// do stuff!
});
详细描述了here。
但是,以这种方式使用客户端javascript的文档并没有解释如何往返信息(在客户端设置'state'变量并让它可以从服务器访问)。
这可能很明显,但任何帮助都会非常感激!
此外,我认为有些事情与我很好奇有密切关系。我知道客户端代码在调用服务器上的函数之后可以获得返回值/回调(如上面链接的文档)
proxy.invoke('add', 1, 2)
.done(function(result) {
console.log('The result is ' + result);
});
但是当客户端完成任务时,服务器是否可以从客户端获得回调? (显然只是让客户端触发预定义事件才能解决这个问题,但如果可能的话,处理所有回调而不必设置其他事件会很好。)
谢谢!
答案 0 :(得分:3)
<强> 1)强> 对于设置状态,它很简单:
proxy.state.foo = 1337;
当然,您可以通过
在服务器上获取此信息int myFoo = Clients.Caller.foo;
<强> 2)强> 否则当客户端功能执行完毕后,您无法在服务器上收到通知。如果你想知道客户端功能何时完成,你可以自己回电话给服务器。
例如:
proxy.on('foo', function(){
console.log("Foo executed");
proxy.invoke("fooDone");
});
然后,您需要在服务器上创建一个“fooDone”函数来处理回调。
希望这有帮助!