目前我正在使用此代码向每个客户发送略有不同的消息。当有 100 多个客户端时,没有任务的相同代码会阻塞我的计时器循环,我怀疑它也会阻塞所有 Web 请求。
ConcurrentDictionary Sessions;
// ...
var context = GlobalHost.ConnectionManager.GetHubContext<TiHub>();
foreach(var kp in Sessions)
{
var client = context.Clients.Client(kp.Key);
if (client != null)
{
client.changed(new Data{ data=somevalue(kp.Value) });
}
}
异步版本
var context = GlobalHost.ConnectionManager.GetHubContext<TiHub>();
return Task.Run(() =>
{
Parallel.ForEach(Sessions, kp =>
{
var client = context.Clients.Client(kp.Key);
if (client != null)
{
client.changed(new Data{ data=somevalue(kp.Value) });
}
});
});
我想要一个“已更改”的任务或异步版本。就像是:
client.changedAsync(new Data{ data=somevalue(kp.Value) });
SignalR 是否支持此功能?