在SignalR中设置客户端的状态变量

时间:2013-04-12 17:40:21

标签: c# javascript jquery signalr

我正在使用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);
     });

但是当客户端完成任务时,服务器是否可以从客户端获得回调? (显然只是让客户端触发预定义事件才能解决这个问题,但如果可能的话,处理所有回调而不必设置其他事件会很好。)

谢谢!

1 个答案:

答案 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”函数来处理回调。

希望这有帮助!