我正在使用 javascript 库连接到控制台应用程序中托管的 signalR 服务器。
因此,我连接并设置可以从服务器调用的客户端方法,如下所示:
var connection = $.hubConnection('http://localhost:8080'),
proxy = connection.createHubProxy('TestApp');
proxy.on('sendMessage', function () {
// do stuff!
});
详细描述here .
但是,以这种方式使用客户端 JavaScript 的文档并未解释如何往返信息(在客户端设置“状态”变量并从服务器访问它)。
这可能很明显,但我们将不胜感激任何帮助!
此外,还有一些我认为密切相关且令我好奇的事情。我知道客户端代码可以在像这样调用服务器上的函数后获得返回值/回调(来自上面链接的文档)
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”函数来处理回调。
希望这有帮助!
关于c# - 在 SignalR 客户端设置状态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15977602/