Signalr 信号集线器:在多个客户端上使用相同的参数调用相同的方法

Signalr 信号集线器:在多个客户端上使用相同的参数调用相同的方法,signalr,signalr-hub,Signalr,Signalr Hub,我有一个现有的服务,在事件发生时通知大量客户机。它使用了一个我自己滚动的长轮询机制。我正在探索用一个信号中心来取代这个机制,并让一个原型工作。但它有一个相当明显的低效率,感觉应该有一个解决方案,但我没有找到它 我理解signar中的组的概念,组显然是为了防止这种低效,但我不能使用组是有原因的。我希望我需要在使用每个客户机的ConnectionId的许多客户机上使用相同的参数值调用相同的客户机方法就足够了。如果有必要的话,我可以解释原因,但这确实离题了 假设我有一个200个ConnectionId

我有一个现有的服务,在事件发生时通知大量客户机。它使用了一个我自己滚动的长轮询机制。我正在探索用一个信号中心来取代这个机制,并让一个原型工作。但它有一个相当明显的低效率,感觉应该有一个解决方案,但我没有找到它

我理解signar中的组的概念,组显然是为了防止这种低效,但我不能使用组是有原因的。我希望我需要在使用每个客户机的ConnectionId的许多客户机上使用相同的参数值调用相同的客户机方法就足够了。如果有必要的话,我可以解释原因,但这确实离题了

假设我有一个200个ConnectionId的列表,我需要对传递相同对象参数的每个ConnectionId调用相同的方法。如果我只是遍历ConnectionId的调用Clients.Client(ConnectionId).clientMethod(param),我假设param对象将被序列化200次

是否有方法将参数序列化一次,然后使用已序列化的参数调用客户机方法

更新

我发现了一个github问题,听起来很相关(甚至可能是这个问题)。这项功能似乎是添加到signalr中的,但github问题没有说明如何实现这项功能,我在signalr文档中也找不到任何与此相关的内容

更新2

在上面提到的github问题中,新功能只针对PersistentConnection实现,而不是Hub。对于持久连接,当发送ArraySegment类型的参数时,信号器假定它是预序列化的,并按原样发送,而不序列化它


出于某些原因,这没有对集线器实现,尽管它对集线器很有用,因为它对持久连接很有用。

在OnConnected`事件的
静态列表中存储所有connectionId,并使用以下命令:

Static List<string> allconnections = new List<string>();
    public override Task OnConnected()
        {
           allconnections.Add(Context.ConnectionId);
           return base.OnConnected();
         }

Public void YourServerMethod(params)
{
     Clients.Clients(allConnections).clientMethod(params)
}
Static List allconnections=new List();
已连接的公用覆盖任务()
{
allconnections.Add(Context.ConnectionId);
返回base.OnConnected();
}
Public void YourServerMethod(params)
{
Clients.Clients(allConnections).clientMethod(params)
}