2

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

因此,我连接并设置可以从服务器调用的客户端方法,如下所示:

var connection = $.hubConnection('http://localhost:8080'),
    proxy = connection.createHubProxy('TestApp');

proxy.on('sendMessage', function () {
    // do stuff!
});

这里有详细描述。

但是,以这种方式使用客户端 javascript 的文档没有解释如何往返信息(在客户端设置“状态”变量并使其可以从服务器访问)。

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

此外,还有一些我认为与我好奇的密切相关的事情。我知道客户端代码在调用服务器上的函数后可以获得返回值/回调(来自上面链接的文档)

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

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

谢谢!!

4

1 回答 1

3

1) 设置状态很简单:

proxy.state.foo = 1337;

然后当然你可以在服务器上通过

int myFoo = Clients.Caller.foo;

2) 不,当客户端功能完成执行时,您无法在服务器上收到通知。如果您想知道客户端功能何时完成,您只需自己回调服务器即可。

例如:

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

然后,您需要在服务器上创建一个“fooDone”函数来处理回调。

希望这可以帮助!

于 2013-04-12T18:46:06.313 回答