SignalR主动通知订阅者示例
2016-04-01 16:57
232 查看
html代码:
hub代码:
通知调用Notify方法即可。
关键点:GlobalHost.ConnectionManager.GetHubContext
<script src="~/Scripts/jquery.signalR-2.2.0.min.js"></script> <script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script> <script> $(function () { var hub = $.connection.payHub; hub.client.waitNotify = function (tran, url) { console.log("waitNotify:" + tran + " " + url); if (tran) { location.href = url; } }; $.connection.hub.start().done(function () { console.log("hub done"); }); }) </script>
hub代码:
[HubName("payHub"), Authorize] public class payHub : Hub { public static Dictionary<Guid, string> userPayHub = new Dictionary<Guid, string>(); public static void Notify(Guid userId, string redirectUrl) { if (userPayHub.ContainsKey(userId)) { Microsoft.AspNet.SignalR.GlobalHost.ConnectionManager.GetHubContext<Hubs.payHub>() .Clients.Client(Hubs.payHub.userPayHub[userId]) .waitNotify(true, redirectUrl); } } public override Task OnConnected() { var uid = this.Context.User.Identity.GetUserId(); userPayHub[uid] = this.Context.ConnectionId; return base.OnConnected(); } public override Task OnDisconnected(bool stopCalled) { var uid = this.Context.User.Identity.GetUserId(); userPayHub.Remove(uid); return base.OnDisconnected(stopCalled); } public override Task OnReconnected() { var uid = this.Context.User.Identity.GetUserId(); userPayHub.Remove(uid); return base.OnReconnected(); } }
通知调用Notify方法即可。
关键点:GlobalHost.ConnectionManager.GetHubContext
相关文章推荐
- 论文中怎样加入参考文献
- 类的成员函数:几个重载函数
- hdu-2888 Check Corners(二维RMQ模板题)
- linux下安装JDK
- redis sentinel配置
- 设置SVN提交时强制添加注释
- Auto Layout界面自动布局系列1-自动布局的基本原理
- hdu4228 (反素数)
- Delphi “Invalid floating point operation.”错误的解决方法(使用System单元提供的Set8087CW函数禁用浮点异常)
- HttpWebRequest用法实例
- 记一次 nginx 504 Gateway Time-out
- 程序员的自我修养:有助于提高沟通能力的7本书
- 六大刹车技巧,帮你避免90%的事故
- Android USB通信
- 批量保存图片到指定文件夹中
- 62. Unique Paths
- 总结一下Intent匹配机制
- 杭电ACM1012
- 简单配置nginx使之支持pathinfo
- mac客户端上传github