我知道当消息的大小超过32K时,SignalR可能存在性能问题,我想做的是扩展SignalR的常规过程,以检查消息的大小并记录消息大小是否超过32K截止值。我试图通过注册继承自SignalR自身类型的自定义类型来实现此目的,如此处记录:https://github.com/SignalR/SignalR/wiki/Extensibility,但是当对象从服务器推送到客户端时,没有达到预期的方法。我是在做错什么,还是有另一种方法来监视超过32K的对象?
public class MessageBusWithChecking : MessageBus
{
public MessageBusWithChecking(IDependencyResolver resolver) : base(resolver)
{
}
//This method is never hit
public override Task Publish(Message message)
{
var messageSize = message.Value.Count();
const int mem32K = 1024 * 32;
if (messageSize > mem32K)
{
//Do Logging here
}
return base.Publish(message);
}
}
//App startup code...
public class Startup
{
public void Configuration(IAppBuilder app)
{
...
//Register custom class
GlobalHost.DependencyResolver.Register(typeof(IMessageBus), () => new MessageBusWithChecking(GlobalHost.DependencyResolver));
...
}
}
我也尝试了与“ IJsonSerializer”相同的过程,但也没有结果。