c# - 在 SignalR 客户端设置状态变量

标签 c# javascript jquery signalr

我正在使用 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/

相关文章:

c# - 如何在 Visual Studio 中使用 "Light bulb"重构工具来使用显式类型而不是 var?

javascript - 总计数和特定顺序的正则表达式模式匹配

javascript - 只想要 leftArrow 右箭头和数字

javascript - 在动态添加的按钮上注册点击事件 jQuery

jquery - 选择 :after pseudo class/element

c# - 如何在 Infragistic UltraGrid 中选择行或单元格?

c# - 如何在 C# 中创建可以从丢失的网络连接中恢复的 TcpClient?

javascript - 回调和递增变量

javascript - 如何将 ng-keypress 更改为 ng-change 功能

c# - 在 C# 中有没有办法从 C/C++ 复制 '#ifndef _DEBUG'?