gpt4 book ai didi

c# - Signalr - 重写发送消息的方法

转载 作者:行者123 更新时间:2023-11-30 14:13:22 27 4
gpt4 key购买 nike

我在 Signalr 中实现了 PersistentConnection 类。对于我们的站点,我需要能够广播一条消息,然后让每个连接确定该特定消息是否与该特定用户相关,然后再将其通过管道发送到浏览器。

像这样:

public class MyConnection : PersistentConnection {

private int _UserID;

public override void OnSending(object message) {
var msg = message as MyNotification;
if(msg != null && !msg.CanRead(_UserID))
return;
base.OnSending(message);
}

}

这可能吗?

现在,我们有一个自定义 session 状态对象。连接后,id 被添加到用户 session 对象中。当我们有消息要发送时,我们会引发一个事件,每个 session 都会确定是否将消息传递给其关联的客户端 ID。我真的很想将它与我们的 session 对象分离。

最佳答案

您可以创建一个中心管道模块来获得这种影响。

例如你可以这样做:

public class MyModule : HubPipelineModule
{
protected override bool OnBeforeOutgoing(IHubOutgoingInvokerContext context)
{
return context.Connection.ShouldSend();
}
}

然后在您的 Application_Start 中:

GlobalHost.HubPipeline.AddModule(new MyModule());

当然,您需要将 ShouldSend 方法添加到 IConnection 接口(interface)和相应的连接对象,但这会为您提供所需的结果。

有关集线器管道模块的更多信息,请参阅 http://weblogs.asp.net/davidfowler/archive/2012/11/11/microsoft-asp-net-signalr.aspx 的集线器管道部分

关于c# - Signalr - 重写发送消息的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14442689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com