Heim  >  Artikel  >  Backend-Entwicklung  >  SignalR sendet eine Seitensprungbenachrichtigung

SignalR sendet eine Seitensprungbenachrichtigung

高洛峰
高洛峰Original
2017-02-28 15:26:571439Durchsuche

Wenn Sie Alipay zum Bezahlen im WeChat-Einkaufszentrum verwenden, muss es eine Übergangsseite geben, die den Benutzer auffordert, die Seite mit einem Browser zum Bezahlen zu öffnen und dann WeChat zu öffnen, nachdem der Benutzer die Zahlung im Browser abgeschlossen hat (immer noch WeChat). zeigt zu diesem Zeitpunkt die Übergangsseite an), übermäßig Die Seite muss zur Seite mit den Bestelldetails springen. Woher weiß diese übermäßige Seite, dass sie springen muss?

Was mir jetzt einfällt, ist, SigbalR zu verwenden, um eine Benachrichtigung zu senden, um der Übergangsseite mitzuteilen, dass sie springen soll.

Der erste Schritt besteht darin, SigbalR hinzuzufügen Zuerst die zugehörige DLL.

Der zweite Schritt, den Hub anpassen

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

Der dritte Schritt , passen Sie UserIdProvider an, da wir eine Sprungbenachrichtigung an den angegebenen Benutzer senden müssen

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

Schritt 4, registrieren uns im Startup Der definierte UserIdProvider

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

Schritt 5, fügen Sie diese Codezeile hinzu, um die Benachrichtigung zu senden, wenn die Alipay-Zahlung erfolgt asynchron abgeschlossen und übergeben Geben Sie den Bestellnummernparameter ein. Hier wird eine Benachrichtigung an den Benutzer gesendet, der die Kunden-ID bestellt hat. Die Bestell-Kunden-ID ist dieselbe wie die ID des aktuellen Logins. So können die Informationen empfangen werden.

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

Schritt 6, Ausführung auf der Übergangsseite akzeptieren

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

Auf diese Weise können Sie den Seitensprung nach Abschluss der Zahlung perfekt realisieren. Ich kann mir im Moment keinen besseren Weg vorstellen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Weitere Artikel zum Senden von Seitensprungbenachrichtigungen durch SignalR finden Sie auf der chinesischen PHP-Website!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn