WebSockets oder eine Alternative mit Phonegap?

8

Wie kann ich Daten mit niedriger Latenz an einen Server und zurück mit Phonegap senden?

Wenn ich bedenke, dass ich lokal keinen Zugriff auf PHP-Dateien habe und keine Erfahrung mit node.js oder WebSockets habe, weiß ich nicht, welche ich verwenden soll.

    
maxhud 23.01.2013, 15:15
quelle

4 Antworten

11

WebSockets werden von den Browsern in Android nicht nativ unterstützt oder ältere Versionen von Cordova unter iOS , was bedeutet, dass Sie ein PhoneGap-Plugin verwenden müssen, wenn Sie sie auf dem Client verwenden möchten.

Weitere Informationen finden Sie unter Ссылка

Ich bin mir allerdings (auch mit dem Plugin) nicht sicher, wie belastbar WebSockets wohl sein werden, wenn das Gerät zwischen Netzwerkverbindungen wechselt (WiFi - & gt; 3G - & gt; WiFi), also einen einfachen Polling-Webservice nutzen kann Eine zuverlässigere Option, wenn Ihre App weiterhin Daten empfangen muss, wenn sich Ihre Benutzer bewegen.

Wenn Sie vom Server initiierte Daten erhalten möchten, sollten Sie stattdessen Push-Benachrichtigungen verwenden: Sowohl iOS (APN) als auch Android (C2DM) stellen APIs zur Verfügung, die den Akku effizienter nutzen, als wenn Ihre App Ihren Server abfragt ständig.

    
rmc47 23.01.2013, 15:58
quelle
4

Sie können WebSockets in PhoneGap mit iOS und Android verwenden. WebSockets werden nativ von iOS in Safari unterstützt. Für Android müssen Sie ein Polyfill verwenden.

Siehe: Ссылка

Die obige Antwort enthält Informationen darüber, wie Sie ein WebSocket-Objekt innerhalb des von PhoneGap verwendeten Android-WebView-Objekts verfügbar machen, und stellt außerdem einen Link zu einem Beispielprojekt bereit, mit dem Sie beginnen können.

WebSockets wurden als eine Lösung für "Comet" -Hacks entwickelt. Als solche bieten sie eine Lösung mit sehr geringer Latenz für die bidirektionale Kommunikation in Echtzeit zwischen einem Client und einem Server. Dies bedeutet geringe Bandbreite und geringe Ressourcenauslastung - Batterie auf Mobilgeräten - da Sie eine einzelne Verbindung offen halten, statt mehrere HTTP-Verbindungen zu öffnen und zu schließen. Eine Polling-Lösung, die Anfragen in regelmäßigen Abständen sendet, wird die Batterie wahrscheinlich schneller entladen als eine WebSocket-Lösung. Wenn Sie in kürzeren Intervallen abfragen, kann es in Ordnung sein - das hängt von Ihrem Anwendungsfall ab.

Wenn WebSockets zwischen Netzwerk- und Netzwerktyp wechseln (WiFi - & gt; 3G - & gt; WiFi), müssen Sie, wenn Sie WebSockets nativ verwenden, onclose erkennen und die Verbindung wiederherstellen. Sie müssen auch die beste Verbindungsart bestimmen. unsicher (WS) oder sicher (WSS). Ich würde Ihnen wärmstens empfehlen, WSS für mobile Geräte zu verwenden, da einige Mobilfunkanbieter transparente Proxys verwenden, die WS-Verbindungen stören. Das mag kompliziert klingen, aber es gibt eine Reihe von Bibliotheken, die das für Sie erledigen. Wie die Pusher JavaScript-Bibliothek ( Hinweis: Ich arbeite für Pusher ). Bibliotheken wie diese bieten auch eine Alternative zu einer weniger effizienten HTTP-basierten Lösung, wenn die Umgebung keine WebSocket-Verbindung zulassen wird.

Siehe auch: Echtzeit-Web-Technologie-Leitfaden .

Ich stimme @ rmc47 zu, dass Sie native Push-Benachrichtigungen in Erwägung ziehen sollten, wenn es sich um seltene einzelne Benachrichtigungen handelt.

    
leggetter 25.01.2013 11:53
quelle
0

Klicken Sie auf diesen Link, um den WebSocket-Support von Browsern und Geräten zu sehen: html5test.com - < strong> iOS 4.2 + unterstützt bereits WebSocket

In diesem Dokument wird erläutert, wie Sie mit WebSocket eine einfache Anwendung entwickeln.

Leider ist der Inhalt in der portugiesischen (brasilianischen) Sprache, aber Sie können Kommentare hinterlassen, die ich beantworten werde.

    
João Paraná 23.01.2013 16:33
quelle
0

Ich bin nicht sicher, was Sie mit "Zugriff auf PHP-Dateien lokal" meinen. Die Verwendung von node.js und Web-Sockets schließt sich ebenfalls nicht gegenseitig aus.

Wenn Sie keine Entscheidung über die Serverimplementierung getroffen haben, können Sie entweder node.js oder ASP.NET verwenden.

node.js bietet eine gute Unterstützung für Sockets mit Socket.io , die die Client-Implementierung für Sie abstrahiert. Es wird also WebSockets verwenden, wenn es Unterstützung gibt, sonst wird es auf lange Abfragen zurückgreifen.

ASP.NET hat eine Bibliothek namens SignalR , die etwas ähnliches für die .NET-Plattform tut.

    
codemonkey 23.01.2013 17:00
quelle

Tags und Links