使用SignalR发送页面跳转通知

摘要:
在微信商城使用支付宝支付时,需要有一个过渡页面,提示用户用浏览器打开页面进行支付,然后在用户在浏览器中完成支付后打开微信。转换页面需要跳转到订单详细信息页面。所以我们可以接收信息。varmyHub=全局主机连接管理器。GetHubContext<myHub>();myHub.Clients.User。redirctOrderDetails;步骤6:在过渡页面上接受执行//声明代理引用集线器。请记住,方法的第一个字母在$之后。联系必须小写,这就是我使用别名varchat=$的原因。联系chinookHub//这里是注册hub调用的方法。与1.0不同,它需要在聊天后注册。客户端,1.0不需要chat.client。editOrderDetails=function{window.location.href=“/Customer/MyOrderDetails?目前还没有提出更好的方法。

微信商城使用支付宝支付的时候,需要有个过度页面提示用户用浏览器打开页面去支付,等用户在浏览器支付完之后再打开微信(微信此时依旧显示的是过度页面),过度页面需要跳转到订单详情页面。那么这个过度页面怎么知道需要跳转呢?

目前能想到的就是用SigbalR发送通知告诉那个过度页面去跳转.

第一步,先添加SigbalR相关dll.

第二步,自定义hub

    public class myHub:Hub
    {
        public override Task OnConnected()
        {
            return base.OnConnected();
        }
    }

第三步,自定义UserIdProvider,因为我们需要给指定用户发送跳转的通知

    public class CustomerUserIdProvider: IUserIdProvider
    {
        public string GetUserId(IRequest request)
        {
            //获取当前登录用户
            var customer = EngineContext.Current.Resolve<IWorkContext>().CurrentCustomer;
            if(customer==null)
            {
                return "";
            }else
            {
                //返回当前登录用户id
                return customer.Id.ToString();
            }
        }
    }

第四步,在startup里注册我们自定义的UserIdProvider

        //SignlR
            var idProvider = new CustomerUserIdProvider();
            GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => idProvider);
            app.MapSignalR();

第五步,在支付宝支付完成异步通知加上这行代码发送通知,并且传入订单单号参数,这里给order customerid的用户发送通知,order customerid和当前登录者的id是一样的。所以能接收到信息。

        var myHub = GlobalHost.ConnectionManager.GetHubContext<myHub>();
         myHub.Clients.User(order.OrderCustomerId.ToString()).redirctOrderDetails(order.OrderNumber);

第六步,在在过度页面接受执行

               // 声明一个代理引用该集线器,记得$.connection.后面的方法首字母必须要小写,这也是我为什么使用别名的原因
                var chat = $.connection.chinookHub;
                // 这里是注册集线器调用的方法,和1.0不同的是需要chat.client后注册,1.0则不需要
                chat.client.redirctOrderDetails = function (oerderNumber) {
                    window.location.href = "/Customer/MyOrderDetails?page=4&orderNumber=" + oerderNumber;
                };
                chat.client.redirctMoneyAccountDetail = function () {
                    window.location.href = "/Customer/AccountDetail/Money";
                };
                // 启动连接
                $.connection.hub.start();

这样,就可以完美的实现支付完成后跳转页面了。目前没想到更好的办法了。

免责声明:文章转载自《使用SignalR发送页面跳转通知》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇[vuejs] 终端npm run dev 不能自动打开浏览器运行项目解决办法PHP 配置文件中open_basedir选项作用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ASP.NET Core SignalR (六):在SignalR中管理用户和分组

此为系列文章,对MSDN ASP.NET Core SignalR 的官方文档进行系统学习与翻译。其中或许会添加本人对 ASP.NET Core 的浅显理解。        SignalR 允许消息被发送给关联给特定用户的所有连接,以及命名的连接分组。 SignalR中的用户        SignalR 允许你将消息发送给关联给特定用户的所有连接。默认情...

SignalR 2.0 系列:SignalR的服务器广播

英文渣水平,大伙凑合着看吧…… 这是微软官方SignalR 2.0教程Getting Started with ASP.NET SignalR 2.0系列的翻译,这里是第八篇:SignalR的服务器广播 原文:Tutorial: Server Broadcast with SignalR 2.0 概述 VS可以通过Microsoft.AspNet.Sign...

C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表

本文主要是我在刚开始学习 SignalR 的技术总结,网上找的学习方法和例子大多只是翻译了官方给的一个例子,并没有给出其他一些经典情况的示例,所以才有了本文总结,我在实现推送简单的数据后,就想到了如何去推送复杂的数据,以及推送一个实时的图表数据,文本为我原创,转载请注明出处:Richard.Hu,先上一堆乱七八糟的说明先: SignalR的官方地址是: h...

Signalr入门系列:Signalr简介(二)

一、SignalR和WebSocket SignalR是在WebSocket的基础上进一步的封装,可以实现除了WebSocket原有功能上更多的功能,例如回退到其他transports,修改应用程序以更新WebSocket implementations。SignalR可以自动判断传输方式,在可以用的情况下使用新的WebSocket传输,并在必要时使用旧的...

C# SignalR 即时通讯 聊天室

一.SignalR简介 SignalR:当所连接的客户端变得可用时服务器代码可以立即向其推送内容,而不是让服务器等待客户端请求新的数据。实现实时服务器与客户端通信。是一个开源.NET 库生成需要实时用户交互或实时数据更新的 web 应用程序。 SignalR的出现,让页面通过javascript可以很简单的调用后端服务的方法,而在后端也可以很简单的直接调用...

一、在 ASP.NET Core 中使用 SignalR

一、介绍 SignalR是一个用于实现实时网站的 Microsoft .NET 库。它使用多种技术来实现服务器与客户端间的双向通信,服务器可以随时将消息推送到连接的客户端。 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?tabs=visual-studio&view=a...