2017-11-08 31 views
0

Ich verwende eine ASP.Net Web Forms Anwendung in einer Azure Cloud. Jetzt habe ich eine spezielle Anforderung, dass ich keine Ahnung habe, wie ich lösen soll: Der Server muss eingehende Verbindungen über das Internet von Android Clients annehmen und dann diese Verbindung für einen langen Zeitraum (Tage) offen (oder im Standby) halten . Nach Stunden oder Tagen muss der Server den Weg zum Android-Client finden und Daten an ihn senden. Ich kann verwenden, welche Technologie für beide Partner funktioniert, aber da das Internet dazwischen ist, wird http/https als Protokoll bevorzugt (obwohl WCF mit TCP-Endpunkten auch funktionieren könnte, wenn die Verbindung vom Client initiiert wird). Das einzige, was ich mir vorstellen kann, ist, dass die Clients ständig den Server abfragen, wenn ein Befehl/Daten verfügbar sind, aber diese Lösung ist hässlich und verschwendet viele Ressourcen. Der Client sollte innerhalb von Sekunden reagieren, wenn der Server etwas dafür zu tun hat, also müsste ich ein Abfrageintervall von ~ 10s verwenden. Ich weiß, dass http "keep alive" existiert und kann in C# WebClients verwendet werden, aber ich bezweifle, dass es mit meinen Anforderungen arbeiten wird? Gibt es eine andere Möglichkeit, dies zu erreichen?ASP.Net: Konstanter Kommunikationskanal mit Android-Clients

+0

haben Sie jemals von FCM Downstream Messaging gehört, Verwenden Sie, dass –

+0

Nein habe ich noch nicht, ich werde es mir ansehen. Auf den ersten Blick könnte das eine gute Option sein, da ich keine vernünftigen Daten an den Client senden muss. Ich frage mich, wie sie die Verbindung von der App zu den Google-Servern offen halten ... – Cleo

+0

U müssen Server-seitige Implementierung von FCM machen. I.e. Verwenden Sie den Restanruf und senden Sie die Daten mithilfe der Instanz-ID an das Gerät. –

Antwort

0

Basierend auf Nirajs Antwort fand ich Google Firebase Cloud Messaging. Danach las ich das XMPP-Protokoll und die SignalR-Technologie, die für .Net verfügbar sind, und entschied mich schließlich für SignalR, da die Implementierung sehr einfach ist und keine Beteiligung Dritter erfordert.

Verwandte Themen