Ich muss Anfragen vom Server an die Anwendung richten, die auf der Hardware des Benutzers zu Hause ausgeführt wird. Ich kann nicht zulassen, dass die Anwendung die Daten auf den Server überträgt, da ich die Daten nicht speichere, sondern sie an eine Client-orientierte Web-App weiterleiten muss (auch darf ich die Daten nicht auf dem Server speichern). Ich bin mir momentan nicht sicher, wie ich das erreichen kann. Meine einzige Idee ist es, freie Socket-Verbindungen zu haben, wo ich die Anfragen schreiben kann. Dies scheint kompliziert und ich weiß nicht, ob es skalierbar ist (gibt es eine Grenze für offene Socket-Verbindungen? Wie viel Ressourcen vergeuden ungenutzte Verbindungen?). Es ist auch ein bisschen Low-Level, aber ich kann nicht sehen, wie ich http verwenden kann und ich kenne andere geeignete Protokolle nicht.So stellen Sie eine Anfrage vom Server an die Geräte hinter dem Router
Antwort
Hier sind einige der verfügbaren Optionen. Ich gehe davon aus, dass das Heimnetzwerk eine typische Heiminstallation ist, bei der eingehende Verbindungen aus dem Internet standardmäßig vom Heimrouter/der Firewall blockiert werden.
Home Anwendungs Umfragen Server
Da die Anwendung im Heimnetzwerk ausgeführt wird eine Verbindung zum Internet heraus kann, können Sie die Verbindung umdrehen, so dass die Anwendung auf dem Heimnetzwerk auf dem zu Ihrem Server verbindet out Internet. Abhängig von der Anwendung und den Anforderungen kann die Home-Anwendung eine einfache HTTP-Verbindung zu Ihrem Server herstellen, einmal pro Tag, einmal pro Stunde, einmal alle 5 Minuten usw. Je nach Situation. Wenn der Server nichts für die Home-Anwendung hat, gibt er nur eine einfache Antwort zurück, dass er keine Daten hat. Wenn der Server über einige Daten für die Anwendung zu Hause verfügt, gibt es nur die Daten zurück, wenn die eingehende Anforderung eingeht.
Der Hauptnachteil dieses Schemas ist, dass der Server warten muss, bis das nächste Abfrageintervall des Clients, bevor es liefern kann Daten an den Kunden.
Home Anwendungs Anschluss WebSocket oder socket.io Verbindung der Server
Auch die Heimanwendung mit dem Server verbindet, aber dieses Mal schafft sie eine WebSocket oder Socket.io Verbindung. Diese Verbindung kann dann so lange offen gehalten werden, wie Sie möchten. Sobald diese Verbindung geöffnet ist, kann der Server die Clientdaten jederzeit senden. Wenn die Verbindung zu irgendeinem Zeitpunkt unterbrochen wird, baut der Client einfach eine neue Verbindung auf. Dies kostet auf der Client-Seite ziemlich viel und auf dem Server eine sehr kleine Menge an Ressourcen (ein wenig Speicher pro Verbindung).
Richtig konfigurierte Server können Hunderttausende simultaner WebSocket-Verbindungen verarbeiten. Speziell konfigurierte Server können sogar Millionen von Verbindungen bewältigen.
offenes Loch in Home-Router/Firewall
In diesem Fall wird der Home-Router/Firewall "Portweiterleitung" eingehende Anfragen auf einen bestimmten Port (wahrscheinlich nicht Port 80) in die Ausgangs Anwendung konfiguriert ist. In diesem Fall muss die Home-Anwendung zuvor ihre IP-Adresse beim Server registriert haben und den Home-Router/die Firewall ordnungsgemäß konfiguriert haben, um einen direkten Zugriff auf einen bestimmten Port für die Home-Anwendung zu ermöglichen. Sobald dies alles richtig konfiguriert ist, kann der Server eine direkte Verbindung zur Home-Anwendung herstellen.
Da regelmäßige Endbenutzer häufig Schwierigkeiten haben, den Router/die Firewall so zu konfigurieren, dass dieser Zugriff und die Fehlerbehebung schwierig sind, ist dies keine sehr häufig gewählte Option.
Hybrid Polling
Es gibt auch einen Hybrid-Ansatz, bei dem der home-Client regelmäßig ein UDP-Paket an den Server sendet. Dieses UDP-Paket bewirkt, dass der Home-Router/die Firewall einen Rückpfad von demselben Server zurück zum Home-Client öffnet. Dieser Rückweg bleibt für einige Zeit offen und während dieses Zeitintervalls kann der Server ein UDP-Paket an den Client senden, und der Router/die Firewall lässt ihn ein. Dies ist eine Herleitung eines Schemas, das von einigen Peer-to-Peer-Systemen verwendet wird. Peer-Protokolle, um durch Home-Router/Firewalls zu gelangen. Da dies UDP, nicht TCP ist, sind die Clients/Server für ihre eigene Lieferzuverlässigkeit verantwortlich.
- 1. So stellen Sie eine domänenübergreifende Anfrage her
- 2. So stellen Sie eine Verbindung zu MySQL her, die auf dem Docker vom Host-Rechner läuft
- 3. Redirect .html Anfrage vom Apache Server an Tomcat Server
- 4. Wie mit zwei Stellen hinter dem Komma
- 5. So entfernen Sie die Zusammenführungsanforderung vom GitLab-Server
- 6. So übertragen Sie eine Datei vom Server zum Server
- 7. pander Anzahl der Stellen hinter dem Komma
- 8. So stellen Sie eine Webanwendung in Amazon Server bereit
- 9. So finden Sie alle an einen Router angeschlossenen esp8266
- 10. So senden Sie eine Benachrichtigung an mehrere Firefox-Geräte gleichzeitig
- 11. So stellen Sie eine Verbindung zum web2py-Server her
- 12. So senden Sie eine Nachricht an einen Router pre-connection
- 13. Warum gibt eine HTTP-Antwort vom Server nicht die GET-Anfrage an, der die Antwort entspricht?
- 14. So stellen Sie eine Verbindung mit Tridion her, indem Sie den Kerndienst vom Clientcomputer verwenden
- 15. Verbinden Sie zwei Android-Geräte über Router
- 16. Wie finde ich die MAC-Adresse hinter einem Router
- 17. können wir Anfrage an Server senden, die diese Anfrage an eine andere IP-Adresse weiterleiten
- 18. So senden Sie Daten an den Server und erhalten die Antwort vom Server mit AFNetworking 3.0?
- 19. Reverse Http Post-Vorgang vom Server auf mobile Geräte
- 20. So stellen Sie die Serverwiedergabe beim Empfang der Anforderung sicher
- 21. http Anfrage an Webhdfs, aber leere Antwort vom Server
- 22. So leiten Sie eine HttpRequestMessage an einen anderen Server weiter
- 23. So stellen Sie die Zeigerreferenz über eine Funktion ein
- 24. So stellen Sie die Suchzeit auf jwplayer
- 25. So verhindern Sie eine externe JS-Anfrage
- 26. So senden Sie eine Nachricht vom Server zum Client
- 27. So stellen Sie eine Dropwizard-Anwendung bereit
- 28. So leiten Sie eine Anfrage an den Routennamen weiter:
- 29. So zeigen Sie die QuickContact-Karte vom Widget an
- 30. So stellen Sie die Kamera richtig ein
danke für diese Übersicht. Bei einigen Aufrufen speichere ich Metadaten, aber andere könnten direkt auf das Gerät gehen. Gibt es eine Methode, um direkt eine Verbindung zwischen dem Webbrowser des Clients und dem Gerät herzustellen? Offenes Loch ist leider nicht möglich. Wenn die Antwort für einen Kommentar nicht in Frage kommt, kann ich eine neue Frage stellen. – Leander
@Leander - Wenn es sich bei der Client-Anwendung um einen Webbrowser handelt (der in Ihrer Frage nicht angegeben wurde), können Sie nur HTTP von Client zu Server oder webSocket von Client zu Server abrufen. – jfriend00
ok, ich habe das schon erwartet;) – Leander