Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Android App REST hook Implementierung (https://www.delphipraxis.net/205065-android-app-rest-hook-implementierung.html)

Necrotarch 28. Jul 2020 17:45

Android App REST hook Implementierung
 
Hey,

ich plane derzeit ein kleines Hobby-Projekt bestehend aus einem REST(-like)-Server, der mit mehreren Clients kommunizieren soll. Ganz grob umschrieben soll es einer Art LAN-Chat ähneln.

Die Option die Clients die ganze Zeit den Server pollen zu lassen hat mir nicht gefallen. Alternativ bin ich auf das hier gestoßen: https://resthooks.org

Mein Gedanke hier war in den Android Clients einen http Server laufen zu lassen, an den ich vom Server aus POSTs schicken kann.

Meine Frage ist jetzt: Hat das schon einer von euch versucht/Erfahrungen damit? Ich würde mich jetzt ungern in ein Design verrennen von dem mir jemand schon vorher einfach abraten kann.

mjustin 28. Jul 2020 20:07

AW: Android App REST hook Implementierung
 
Neben anderen Gründen warum ein HTTP Server auf einem Smartphone "schwierig" ist - das Problem besteht ja weiterhin, nur muss jetzt der "REST"-Server nicht nur die POSTs schicken um Nachrichten zuzustellen sondern auch ständig die Geräte pollen um Nachrichten abzuholen.

HTTP Long Polling (vom Gerät auf einen Server) ist nicht die schlechteste Wahl: solange der Server keine neuen Nachrichten für das Gerät hat, blockiert der Request bis zu einem Timeout (z.B. 30 Sekunden) und startet dann wieder neu. Das belastet das Netzwerk kaum.

Andere Protokolle wären eleganter - eine einzige TCP Verbindung hat ja zwei Kanäle, man kann auf dem einen senden und auf dem anderen empfangen, und das gleichzeitig. Netzwerktechnisch ist aber andererseits dann ein Öffnen der Firewall für den verwendeten Port notwendig. Unterm Strich ist HTTP unkomplizierter und in der Praxis bewährt.

Necrotarch 28. Jul 2020 21:46

AW: Android App REST hook Implementierung
 
Ich glaube ich sollte das einmal etwas präzisieren:

Es soll einen REST-Server auf einem RaspberryPi geben, der in seiner API auch dieses .../API/V<Nummer>/subscribe hat. An die Adresse können die Clients ihre IP&Port posten.

Die Android App soll ebenfalls einen http Server laufen lassen. Damit könnte der Pi an http://<IP>:<Port>/Message z.B. POSTs schicken.

Den Server auf dem Pi kann ich ja sicher problemlos auf der 80 laufen lassen. Bedenken habe ich eher bei dem Android-Gerät. Ich weiß nicht ob das Betriebssystem da eventuell zickt.

himitsu 28. Jul 2020 23:35

AW: Android App REST hook Implementierung
 
Klar, ginge vermutlich, aber warum nicht den normalen Weg?

Auf dem PI ein richtiger/normaler Server und die Clients bauen eine dauerhafte Verbindung zu diesem auf.
Effektiv kommt es auf's Gleiche drauf hinaus, als wenn der Server rückwärtig die Client-Servers anspricht, falls Android nicht mal was gegen eingehende Verbindung haben könnte. (quasi wie eine Firewall auf PCs)

Eine Verbindung macht der Client ja so oder so auf ... da kann man die auch gleich offen lassen.
Außer du fängst auch noch mit Broadcasts an, wo der Server die Clients sucht und von sich aus die Verbindung aufbaut.


Alternativ eben mal schauen ob man lokal eine Notification ans Android senden kann, ohne über die Google-Server gehen zu müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz