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

Setting state variables on the client side in SignalR

本文关键字:状态 变量 设置 客户端 SignalR      更新时间:2023-09-26

我正在使用javascript库连接到托管在控制台应用程序中的signalR服务器。

因此,我连接和设置客户端方法,可以从服务器调用,像这样:

var connection = $.hubConnection('http://localhost:8080'),
    proxy = connection.createHubProxy('TestApp');
proxy.on('sendMessage', function () {
    // do stuff!
});

,这里有详细描述。

然而,以这种方式使用客户端javascript的文档并没有解释如何往返信息(在客户端设置'state'变量并使其从服务器访问)。

这可能很明显,但任何帮助将非常感激!

还有一件事我觉得与之密切相关,我很好奇。我知道客户端代码可以像这样在服务器上调用函数后获得返回值/回调(从上面链接的文档)

proxy.invoke('add', 1, 2)
     .done(function(result) {
         console.log('The result is ' + result);
     });

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

谢谢! !

1)设置状态就像这样简单:

proxy.state.foo = 1337;

当然你可以通过

在服务器上获取这个
int myFoo = Clients.Caller.foo;

2) 不,当客户端函数完成执行时,服务器上无法通知您。如果你想知道客户端函数什么时候完成,你可以自己回调到服务器端。

例如:

proxy.on('foo', function(){
    console.log("Foo executed");
    proxy.invoke("fooDone");
});

然后你需要在服务器上创建一个"fooDone"函数来处理回调。

希望这对你有帮助!