SignalR:异步服务器方法调用的数量限制为5

时间:2015-03-01 19:01:14

标签: c# asp.net asynchronous signalr async-await

我开始玩SignalR并面对这种行为 - 使用异步限制同步客户端调用的数量来标记集线器中的公共方法5.一旦任何正在运行的操作完成,来自某个队列(或缓冲区)的下一个调用将到达集线器中的方法(至少在断点处停止)

public async Task<string> RunNewOperation()
{
    var operation = await _operationContainer.RunNewOperation("Custom task", TaskDummy.DummyAction);

    return "task result";
}

从hub方法中删除async可以运行任意数量的任务

public string RunNewOperation()
{
    var operation = _operationContainer.RunNewOperation("Custom task", TaskDummy.DummyAction);

    return "task result";
}

所以问题是 - 这是一个正确的行为吗?如果是的话,如何避免这种麻烦并允许用户进行任何数量的异步方法调用?

以下是代码示例https://github.com/jsdmc/Asp.Net-MVC-SignalR-tasks-container-sample

1 个答案:

答案 0 :(得分:1)

您正在点击浏览器强制执行的connection limit per hostname

您最好的选择是不要等待返回值,而是让服务器进行活动调用,以便在操作完成后为客户端提供值。

相关问题