如何与一个连接并行地发送多个SignalR消息?
我有以下集线器方法:
public async Task Test()
{
Console.WriteLine($"Start: {DateTime.Now}");
await Task.Run(() => Task.Delay(1000));
Console.WriteLine($"Stop: {DateTime.Now}");
}
在我的客户端,我有以下连接:
private connection: HubConnection = new HubConnectionBuilder()
.withUrl(this.url)
.configureLogging(LogLevel.Information)
.withAutomaticReconnect([1000, 2000, 3000, 4000, 5000])
.build();
我像这样调用集线器方法:
async test(): Promise<void> {
try {
console.log('start: ' + new Date().toString());
await this.connection.invoke('Test');
console.log('stop: ' + new Date().toString());
} catch (err) {
console.error(err);
}
}
当我在客户端中多次调用测试方法时,集线器是一个接一个地接收消息,而不是同时接收所有消息。
客户日志:
开始时间:11月29日17:27:35 GMT+0100 (3) 停止:周一11月29日2021 17:27:36 GMT+0100 停止:周一11月29日2021 17:27:37 GMT+0100 停止: Mon 11月29日2021 17:27:38 GMT+0100
服务器日志:
起点: 29.11.2021 17:27:35 停车时间: 29.11.2021 17:27:36 起点: 29.11.2021 17:27:36 停车时间: 29.11.2021 17:27:37 起点: 29.11.2021 17:27:37 停车时间: 29.11.2021 17:27:38
发布于 2021-11-30 07:43:43
为了允许每个客户端多个并行调用,需要设置MaximumParallelInvocationsPerClient属性,如下所示:
builder.Services.AddSignalR(options => options.MaximumParallelInvocationsPerClient = 10);
https://stackoverflow.com/questions/70157999
复制相似问题