与有用的有效载荷相比,游标有效载荷太大

Cursor payload is too big compared to the useful payload

重现步骤

应用程序的逻辑假定服务器上有大量数据源,这些数据源按组处理。 如果client要订阅具体的数据源,调用:

myhub.Subscribe(dataSourceId);

在服务器端,我们只是将客户端添加到特定组:

await Groups.Add(Context.ConnectionId, dataSourceId.ToString());

然后所有消息都以巨大的游标负载发送。最重要的是,它的大小会随着每次订阅而增加。

我是不是做错了什么?

更新 相似:SignalR and large number of groups

不幸的是,这就是游标的工作方式。 Cursor 包含对连接订阅的所有主题的引用,每个组都是一个单独的主题。除了光标变大之外,使用多个组还有一个限制。客户端所属的组越多,组令牌就越大。当客户端重新连接时,groups 令牌被发送回服务器,如果它变得太大,它可能会超过 URL 大小限制,导致重新连接失败。