我正在使用 PersistentConnection 将大量数据(许多小包)发布到连接的客户端。
它基本上是一种单向的数据方向(因为每个客户端都会调用其他服务器上的端点来设置各种订阅,因此它们不会通过 SignalR 连接将任何数据推送回服务器)。
有没有办法检测到客户端跟不上发送给它的消息?
该示例可能是连接不佳的移动客户端(例如,在漫游情况下,速度可能变化很大)。如果我们每秒发送 100 条消息,但客户端只能处理 10 条,我们最终会丢失消息(由于服务器端的消息缓冲区)。
我正在寻找一个服务器端事件,类似于在(SignalR)客户端上所做的,例如
protected override Task OnConnectionSlow(IRequest request, string connectionId) {}
但这不是框架的一部分(我认为有充分的理由)。
我已经考虑使用这种方法(在 Stackoverflow 上的其他地方建议),让客户端告诉服务器(例如每 10-30 秒)它收到了多少消息,以及该数字是否与发送到的消息数量有很大差异客户,客户很可能跟不上。
该事件将用于告诉分布式后端客户端无法跟上,然后降低数据生成速率。