Maison  >  Article  >  développement back-end  >  SignalR envoie une notification de saut de page

SignalR envoie une notification de saut de page

高洛峰
高洛峰original
2017-02-28 15:26:571487parcourir

Lorsque vous utilisez Alipay pour payer dans le centre commercial WeChat, il doit y avoir une page de transition pour inviter l'utilisateur à ouvrir la page avec un navigateur pour payer, puis à ouvrir WeChat une fois que l'utilisateur a terminé le paiement dans le navigateur (WeChat est toujours affiche la page de transition à ce moment), excessif La page doit passer à la page des détails de la commande. Alors, comment cette page excessive sait-elle qu’elle doit sauter ?

Ce à quoi je peux penser maintenant, c'est d'utiliser SigbalR pour envoyer une notification pour indiquer à la page de transition de sauter.

La première étape est d'ajouter SigbalR dll associée en premier.

La deuxième étape, personnaliser le hub

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

La troisième étape , personnalisez UserIdProvider, car nous devons envoyer une notification de saut à l'utilisateur spécifié

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

Étape 4, inscrivez-vous nous au démarrage Le UserIdProvider défini

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

Étape 5, ajoutez cette ligne de code pour envoyer la notification lorsque le paiement Alipay est terminé de manière asynchrone et passez Entrez le paramètre du numéro de commande Ici, une notification est envoyée à l'utilisateur qui a commandé l'ID client. L'ID client de la commande est le même que l'ID de la connexion actuelle. Ainsi, les informations peuvent être reçues.

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

Étape 6, accepter l'exécution sur la page de transition

// 声明一个代理引用该集线器,记得$.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();

De cette façon, vous pouvez parfaitement réaliser le saut de page une fois le paiement effectué. Je ne peux pas penser à une meilleure façon pour le moment.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles liés à l'envoi de notifications de saut de page par SignalR, veuillez faire attention au site Web PHP chinois !


Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn