C
Chris-Pi
Neues Mitglied
- 0
Hallo zusammen,
ich habe folgendes Problem.
Ich nutze meine App um mit einem REST-Server zu kommunizieren. Dabei sende ich vom Android-Gerät verschiedene Befehle an den REST-Server und empfange die Antworten.
Nun möchte ich dem REST-Server auch Befehle senden die er intern verarbeitet - damit werden weitere Komponenten gesteuert.
Ich möchte nun das der REST-Server mir ein ACK (Acknowledge, Bestätigung) schicken kann - dabei mein ich jetzt nicht ob die Anfrage erfolgreich war, sondern ob meine Operation wirklich umgesetzt wurde. Das heißt mein REST-Server verarbeitet die Anfrage und würde dem Androiden eine Nachricht senden wollen - aber nicht auf Anfrage vom Androiden sondern von sich aus.
Ich habe für meine App zwei Anwendungsszenarien:
1) über Mobiles Netz / Internet - dort möchte ich GCM (Google Cloud Messaging) nutzen, dort habe ich keine Problem das oben genannte zu erledigen.
2) über LAN - dort habe ich nun das Problem:
Die IP des Androiden kann ich am Anfang in meinem Gateway speichern, da mein Androide ein Broadcast im internen Netz macht, um mein Gateway zu finden. Soweit so gut - aber um jetzt vom Gateway an den Androiden zu senden, müsste mein Android ja die ganze Zeit einen PortListener implementieren, der die ganze Zeit auf einem definierten Port lauscht, ob mein Gateway mir Nachrichten senden möchte.
Ich vermute, das dies ziemlich uneffizient in Bezug auf die Akku-Leistung ist und auch so eine nicht so schöne Lösung, da ich somit kein Echtzeitverhalten habe (Abhängig vom Aktualisierungsinterval) und das Problem, das ich bei mehreren Geräten die die App nutzen immer Probleme hätte, die Anzeige Synchron zu halten.
Habt ihr Erfahrungen und könnt mir sagen, in wie weit der Energieverbrauch so eines dauerhaften PortListeners ist?
Gibt es bessere Möglichkeiten dies eleganter zu realisieren? Ich stelle mir so etwas ähnliches vor wie bei GCM, das heißt das ich beim Empfang an einem bestimmten Port einfach einen Intent mit der Nachricht in meiner App empfangen kann - sozusagen einen vorimplementieren PortListener von Android. Gibt es sowas?
Bzw. gibt es andere Möglichkeiten?
Besten Dank schonmal
Grüße
Christoph
ich habe folgendes Problem.
Ich nutze meine App um mit einem REST-Server zu kommunizieren. Dabei sende ich vom Android-Gerät verschiedene Befehle an den REST-Server und empfange die Antworten.
Nun möchte ich dem REST-Server auch Befehle senden die er intern verarbeitet - damit werden weitere Komponenten gesteuert.
Ich möchte nun das der REST-Server mir ein ACK (Acknowledge, Bestätigung) schicken kann - dabei mein ich jetzt nicht ob die Anfrage erfolgreich war, sondern ob meine Operation wirklich umgesetzt wurde. Das heißt mein REST-Server verarbeitet die Anfrage und würde dem Androiden eine Nachricht senden wollen - aber nicht auf Anfrage vom Androiden sondern von sich aus.
Ich habe für meine App zwei Anwendungsszenarien:
1) über Mobiles Netz / Internet - dort möchte ich GCM (Google Cloud Messaging) nutzen, dort habe ich keine Problem das oben genannte zu erledigen.
2) über LAN - dort habe ich nun das Problem:
Die IP des Androiden kann ich am Anfang in meinem Gateway speichern, da mein Androide ein Broadcast im internen Netz macht, um mein Gateway zu finden. Soweit so gut - aber um jetzt vom Gateway an den Androiden zu senden, müsste mein Android ja die ganze Zeit einen PortListener implementieren, der die ganze Zeit auf einem definierten Port lauscht, ob mein Gateway mir Nachrichten senden möchte.
Ich vermute, das dies ziemlich uneffizient in Bezug auf die Akku-Leistung ist und auch so eine nicht so schöne Lösung, da ich somit kein Echtzeitverhalten habe (Abhängig vom Aktualisierungsinterval) und das Problem, das ich bei mehreren Geräten die die App nutzen immer Probleme hätte, die Anzeige Synchron zu halten.
Habt ihr Erfahrungen und könnt mir sagen, in wie weit der Energieverbrauch so eines dauerhaften PortListeners ist?
Gibt es bessere Möglichkeiten dies eleganter zu realisieren? Ich stelle mir so etwas ähnliches vor wie bei GCM, das heißt das ich beim Empfang an einem bestimmten Port einfach einen Intent mit der Nachricht in meiner App empfangen kann - sozusagen einen vorimplementieren PortListener von Android. Gibt es sowas?
Bzw. gibt es andere Möglichkeiten?
Besten Dank schonmal
Grüße
Christoph
Zuletzt bearbeitet: