>  기사  >  백엔드 개발  >  SignalR이 페이지 이동 알림을 보냅니다.

SignalR이 페이지 이동 알림을 보냅니다.

高洛峰
高洛峰원래의
2017-02-28 15:26:571487검색

WeChat 몰에서 Alipay를 사용하여 결제하는 경우 사용자에게 브라우저로 결제 페이지를 열라는 메시지를 표시하는 전환 페이지가 있어야 하며, 사용자가 브라우저에서 결제를 완료한 후 WeChat을 열도록 해야 합니다(WeChat 현재 여전히 전환 페이지가 표시됨), 과도함 페이지가 주문 세부정보 페이지로 이동해야 합니다. 그러면 이 과도한 페이지가 점프해야 한다는 것을 어떻게 알 수 있을까요?

지금 생각나는 것은 SigbalR을 사용하여 전환 페이지가 점프하도록 알림을 보내는 것입니다.

첫 번째 단계는 SigbalR을 추가하는 것입니다. 관련 dll을 먼저.

두 번째 단계, 허브 사용자 정의

 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();
   }
  }
 }

4단계, 시작 시 사용자 정의 UserIdProvider를 등록합니다.

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

다섯 번째 단계, Alipay 결제 완료 비동기 알림 후 알림을 보내는 코드 줄을 추가하고 전달합니다. 주문번호 매개변수, 여기서는 customerid를 주문한 사용자에게 알림이 전송됩니다. 주문 customerid는 현재 로그인 ID와 동일합니다. 그래야 정보를 받을 수 있습니다.

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

6단계, 전환 페이지에서 실행 수락

// 声明一个代理引用该集线器,记得$.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의 페이지 이동 알림 전송과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.