使用SignalR广播消息时忽略客户端
我想忽略提出请求广播我的网络应用程序的消息的客户端。 我似乎可以这样做的唯一方法是缓存当前用户的connectionId:
public class BroadcastHub : Hub { public override Task OnConnected() { System.Runtime.Caching.MemoryCache.Default.Set(HttpContext.Current.User.Identity.Name + "-connectionId", Context.ConnectionId, new CacheItemPolicy() { Priority = CacheItemPriority.Default, SlidingExpiration = TimeSpan.FromHours(1), AbsoluteExpiration = MemoryCache.InfiniteAbsoluteExpiration }); return base.OnConnected(); } public override Task OnReconnected() { System.Runtime.Caching.MemoryCache.Default.Set(HttpContext.Current.User.Identity.Name + "-connectionId", Context.ConnectionId, new CacheItemPolicy() { Priority = CacheItemPriority.Default, SlidingExpiration = TimeSpan.FromHours(1), AbsoluteExpiration = MemoryCache.InfiniteAbsoluteExpiration }); return base.OnReconnected(); } }
这允许我在控制器动作方法中执行以下操作:
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext(); hubContext.Clients.AllExcept((string)MemoryCache.Default.Get(HttpContext.Current.User.Identity.Name + "-connectionId")).sendAddedPasswordDetail(addedPassword);
这种方法似乎有效…但我认为它可能是错误的做事方式。 有没有更好的方法来忽略请求客户端?
有一个特定的属性允许这个特殊的例外,
hubContext.Clients.Others.YourMethodHere
你可以在这里看到它。
编辑:根据评论中的讨论,使用GlobalHost.ConnectionManager.GetHubContext
时Others
不可用
您将需要继续使用当前方法或找到一种方法将此活动委派给BroadcastHub
以访问Others
。
上述就是C#学习教程:使用SignalR广播消息时忽略客户端分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1039548.html