zoukankan      html  css  js  c++  java
  • SignalR主动通知订阅者示例

    html代码:

    <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

  • 相关阅读:
    kvm系列之二:kvm日常管理
    kvm系列之一:构建kvm虚拟机(centos7)
    cobbler无人值守安装
    判断我们的服务器是物理机还是虚拟机
    kickstark无人值守安装
    找回密码之单用户模式
    rsync传输引起的网络延迟
    题解 P3628 【[APIO2010]特别行动队】
    题解 P3211 【[HNOI2011]XOR和路径】
    题解 POJ1094 【Sorting It All Out】
  • 原文地址:https://www.cnblogs.com/calvinK/p/5345511.html
Copyright © 2011-2022 走看看