SignalR函数返回值

时间:2014-10-27 18:34:28

标签: c# signalr signalr-hub signalr.client

我创建了一个SignalR集线器,其中包含以下集线器功能:

public bool GetStatus()
{
    return true;
}

我想从我的JS代码中调用此函数并获取此调用的请求。像这样:

var result = hub.server.getStatus();
if (result)
    alert('success');

如果没有返回bool的任务,这可能吗?

谢谢。

2 个答案:

答案 0 :(得分:23)

没有。 SignalR JavaScript客户端是非阻塞的;您将需要遵循Promise界面,如下所示:

hub.server.getStatus().done(function(result) { 
    if (result) {
        alert('success'); 
    }
});

答案 1 :(得分:2)

在客户端,您需要使用promise接口。但在服务器端,它完全取决于您,下面的代码来自SignalR指南site

同步

public IEnumerable<Stock> GetAllStocks()
{
        // Returns data from memory.
        return _stockTicker.GetAllStocks();
}

异步

public async Task<IEnumerable<Stock>> GetAllStocks()
{
    // Returns data from a web service.
    var uri = Util.getServiceUri("Stocks");
    using (HttpClient httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(uri);
        return (await response.Content.ReadAsAsync<IEnumerable<Stock>>());
    }
}

只需根据需要更改服务器签名