Możesz używać WebSockets w PhoneGap z iOS i Androidem. WebSockets są natywnie obsługiwane na iOS w Safari. W przypadku Androida musisz użyć polyfill.
Patrz: https://stackoverflow.com/a/13527585/39904
powyżej Odpowiedź zawiera informacje na temat sposobu, aby obiekt websocket dostępny w Android WebView używanego przez PhoneGap i zapewnia także link do przykładowego projektu, które można wykorzystać, aby zacząć.
WebSockets zostały opracowane jako rozwiązanie dla "Cometa". Jako takie, zapewniają rozwiązanie o bardzo niskim opóźnieniu dla dwukierunkowej komunikacji w czasie rzeczywistym między klientem a serwerem. Oznacza to niską przepustowość i niskie zużycie zasobów - baterię na urządzeniach mobilnych - ponieważ trzymasz pojedyncze połączenie otwarte, a nie otwierasz i zamykasz wiele połączeń HTTP. Rozwiązanie odpytywania, które wysyła żądania w regularnych odstępach czasu, prawdopodobnie wyczerpuje baterię znacznie szybciej niż rozwiązanie WebSocket.Jeśli odpytywanie odbywa się w niższych odstępach czasu, może być w porządku - zależy to od przypadku użycia.
Jeśli chodzi o WebSockets pracujące podczas zmiany między siecią a typem sieci (WiFi -> 3G -> WiFi), to jeśli korzystasz z WebSockets natywnie musisz wykryć onclose
i ponownie połączyć się. Będziesz także musiał określić najlepszy typ połączenia; niezabezpieczony (WS) lub bezpieczny (WSS). Gorąco polecam korzystanie z WSS dla urządzeń mobilnych, ponieważ niektórzy operatorzy sieci komórkowych używają przezroczystych serwerów proxy, które zakłócają połączenia WS. To może wydawać się skomplikowane, ale istnieje wiele bibliotek, które radzą sobie z tym za Ciebie. Takich jak Pusher JavaScript library (Uwaga: Pracuję dla Pusher). Biblioteki takie jak ta również zastępują mniej wydajne rozwiązanie oparte na HTTP, gdy środowisko nie pozwoli na żadne połączenie WebSocket.
Zobacz również: realtime web technology guide.
Zgodziłbym się z @ rmc47 że należy rozważyć powiadomień push rodzime czy to dla rzadkich pojedynczych zgłoszeń
Co by się stało, gdy urządzenie zmieniło połączeń i używałem websocket? Czy jest jakieś wydarzenie, które poradzę sobie, gdy to się stanie? ... Gdybym miał korzystać z powiadomień push, to co by wymagało zintegrowania API z oprogramowaniem phonegap? Nie mam prawie żadnego doświadczenia w pisaniu kodu dla rodzimego systemu, tylko języki programowania. – maxhud
@maxhud: zależy to od biblioteki WebSocket (pamiętaj, że musisz użyć wtyczki, ponieważ nie są one obsługiwane natywnie). Domyślam się, że w większości przypadków zerwaliby połączenie. To, czy możesz to wykryć, zależy od interfejsu API biblioteki. W przypadku powiadomień wypychanych należy użyć wtyczki PhoneGap. https://github.com/marknutter/GCM-Cordova obsługuje Google Cloud Messaging; https://github.com/purplecabbage/phonegap-plugins/tree/master/iOS/PushNotification obsługuje powiadomienia Apple Push. – rmc47
@maxhud ... continued: Należy pamiętać, że jeśli używasz hostowanej usługi kompilacji, takiej jak PhoneGap Build lub Nomad for Visual Studio (ujawnienie: jestem w zespole Nomad), prawdopodobnie nie będziesz w stanie używać natywne wtyczki, takie jak te wymienione powyżej. W takim przypadku prawdopodobnie będziesz musiał odpytać usługę internetową w odpowiedniej wysokości. – rmc47