我开始玩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
答案 0 :(得分:1)
您正在点击浏览器强制执行的connection limit per hostname。
您最好的选择是不要等待返回值,而是让服务器进行活动调用,以便在操作完成后为客户端提供值。