2013-01-23 23 views
8

nasıl bir sunucuya düşük gecikme veri göndermek ve geri PhoneGap ile yapabilirsiniz?WebKontrolleri veya telefongaplı bir alternatif?

Yerel olarak php dosyalarına erişemediğim ve node.js veya WebSockets ile ilgili deneyimim olmadığımı göz önünde bulundurarak hangisini kullanmam gerektiğini bilmiyorum.

cevap

11

WebKockets Android'de veya older versions of Cordova under iOS tarayıcıları tarafından doğal olarak desteklenmez; bu, istemcilerde kullanmak istiyorsanız PhoneGap eklentisini kullanmanız gerektiği anlamına gelir. Daha fazla bilgi de var

: Ancak http://remysharp.com/2010/10/04/websockets-in-phonegap-projects/

, ben olması muhtemeldir nasıl esnek WebSockets (hatta eklenti ile) emin değilim zaman ağ bağlantıları arasında cihaz hamle (WiFi -> 3G -> WiFi) Bu nedenle, uygulamanızın kullanıcılarınız hareket ettikçe veri almaya devam etmesi gerekiyorsa, basit bir oylama web hizmeti kullanmak daha güvenilir bir seçenek olabilir.

Sunucu tarafından başlatılan verileri almanız gerekiyorsa, bunun yerine push bildirimlerini kullanmayı düşünün: hem iOS (APN) hem de Android (C2DM), uygulamanızın yoklanmasını sağlamaktan daha verimli bir şekilde pil kullanımını sağlayan API'ler sağlar. sunucu sürekli.

+0

ne olur seyrek tek bildirimler için ise

Sana yerli push bildirimleri dikkate gerektiğini @ rmc47 ile kabul ediyorum? Bu olduğunda baş edebileceğim bir çeşit olay var mı? ... Push bildirimlerini kullanacak olsaydım, API'yi telefongap yazılımına entegre etmek ne isterdi? Yerel sistem için neredeyse hiç deneyim yazma kodum yok, sadece web geliştirme dilleri. – maxhud

+0

@maxhud: WebSocket kütüphanesine bağlıdır (yerel olarak desteklenmediği için bir eklenti kullanmanız gerektiğini unutmayın). Tahminimce çoğu durumda bağlantıyı sonlandıracaktı. Bunu tespit edip edemeyeceğiniz kütüphanenin API'sine bağlıdır. Push bildirimleri için bir PhoneGap eklentisi kullanmanız gerekir. https://github.com/marknutter/GCM-Cordova, Google’ın Bulut Mesajını desteklemektedir; https://github.com/purplecabbage/phonegap-plugins/tree/master/iOS/PushNotification, Apple Push Bildirimlerini desteklemektedir. – rmc47

+0

@maxhud ... devamı: PhoneGap Build veya Visual Studio için Nomad gibi bir barındırılan kurulum hizmeti kullanıyorsanız (ifşa: Nomad ekibindeyim), muhtemelen kullanamayacağınızı unutmayın. yukarıda başvurulanlar gibi yerel eklentiler. Bu durumda, muhtemelen web hizmetinizi uygun bir oranda sorgulamanız gerekecektir. – rmc47

0

tarayıcılar ve cihazlar tarafından WebSocket Destek görmek için bu linke bakınız: html5test.com site - iOS 4.2+ zaten WebSocket

WebSocket'e ile basit bir uygulama geliştirmek için nasıl açıklar this doc Bkz destekler.

Ne yazık ki içerik Portekizce (Brezilya) dilinde ancak yanıtlayabileceğim yorumlar yazabilirsiniz.

+0

Android uygulamalarını geliştireceğim ilk önce teşekkürler, ama bu tam olarak değil bakmak – maxhud

0

sana "PHP erişim dosyaları yerel olarak" ile ne demek emin değilim. Node.js ve web soketlerinin kullanımı da karşılıklı olarak özel değildir.

Sunucu uygulamasıyla ilgili bir karar vermediyseniz, node.js veya ASP.NET adreslerine gidebilirsiniz.

node.js, istemci uygulamasını sizin için belirleyen Socket.io numaralı yuvalar için iyi bir desteğe sahiptir. Bu yüzden destek varsa WebSockets kullanacaktır, aksi takdirde uzun yoklamaya geri dönecektir.

ASP.NET, .NET platformu için benzer bir şey yapan SignalR adlı bir kütüphaneye sahiptir.

4

, iOS ve Android ile PhoneGap Yuvalarının kullanabilirsiniz. Safari'de WebSockets iOS'ta doğal olarak desteklenir. Android için bir polyfill kullanmanız gerekecek.

Bkz: https://stackoverflow.com/a/13527585/39904

yanıt yukarıda PhoneGap kullandığı Android WebView içinde WebSocket nesne kullanılabilir hale getirmek için nasıl hakkında bilgi sağlar ve aynı zamanda başlamak için kullanabileceğiniz örnek proje için bir bağlantı sağlar.

WebKockets 'Comet' hack'lerine bir çözüm olarak geliştirilmiştir. Bu şekilde, bir istemci ve sunucu arasında gerçek zamanlı iki yönlü iletişim için çok düşük gecikme çözümü sağlarlar. Bu, düşük bant genişliği ve düşük kaynak kullanımı anlamına gelir - mobilde pil - birden fazla HTTP bağlantısını açıp kapatmak yerine tek bir bağlantı açık tuttuğunuz için. Düzenli aralıklarla istekte bulunan bir sorgulama çözümünün, bataryayı bir WebSocket çözümüne göre çok daha hızlı boşaltması olasıdır.Daha düşük aralıklarla yoklama yapıyorsanız, o zaman iyi olabilir - kullanım durumunuza bağlıdır. Ağ ve ağ tipi (WiFi -> 3G -> WiFi) arasında geçiş yaparken WebSockets olarak çalışırken, WebSockets'i yerel olarak kullanıyorsanız, onclose'u algılayıp yeniden bağlamanız gerekir. En iyi bağlantı türünü de belirlemeniz gerekir; güvensiz (WS) veya güvenli (WSS). Bazı mobil ağ sağlayıcılarının WS bağlantılarını engelleyen saydam proxy kullanması nedeniyle WSS'i mobil cihazlar için kullanmanızı şiddetle tavsiye ederim. Bu karmaşık görünebilir ancak bunu sizin için halleden bir dizi kütüphane var. Pusher JavaScript library (notu gibi: Pusher için çalışıyorum). Bunlar gibi ortamlar, ortam herhangi bir WebSocket bağlantısının oluşmasına izin vermediğinde, daha az verimli bir HTTP tabanlı çözüm için geri dönüş sağlar.

Ayrıca bkz .: realtime web technology guide. o cihaz bağlantılarını değişti ve ben WebSocket'e kullanıyordum zaman