2013-01-23 13 views
8

待機時間の短いデータをサーバに送信し、phonegapで戻すにはどうすればよいですか?WebSocketsまたはphonegapの代わりに?

私はローカルでphpファイルにアクセスすることはできないが、node.jsやWebSocketの使用経験がないと考えると、私はどちらを使うべきか分からない。

答えて

11

WebSocketは、Androidまたはolder versions of Cordova under iOSのブラウザでネイティブにサポートされていないため、クライアントで使用する場合はPhoneGapプラグインを使用する必要があります。詳細については、であります

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

、私は可能性が高いか弾力性のWebSocket(でもプラグインで)よく分からない場合は、ネットワーク接続の間にデバイスを移動する(無線LAN - > 3G - >無線LAN)したがって、単純なポーリングWebサービスを使用する方が、ユーザーが移動してもデータを引き続き受信する必要がある場合は、より信頼できるオプションになる可能性があります。

サーバーで開始されたデータを受け取る必要がある場合は、代わりにプッシュ通知を使用することを検討してください:iOS(APN)とAndroid(C2DM)の両方でAPIを使用すると、サーバーを常に使用します。

+0

のためだ場合は、ネイティブのプッシュ通知を考慮すべきであることを@ rmc47に同意するだろうか?それが起こったときに私が扱うことができる何らかのイベントがありますか? ...プッシュ通知を使用する場合は、APIをphonegapソフトウェアに統合するために何が必要でしょうか?ネイティブシステムのコードを書く経験はほとんどありません。ウェブ開発言語だけです。 – maxhud

+0

@maxhud:WebSocketライブラリに依存します(ネイティブサポートされていないので、プラグインを使用しなければならないことに注意してください)。私の推測では、ほとんどの場合、彼らは接続を終了します。それがライブラリのAPIに依存するかどうかを検出できるかどうか。 プッシュ通知の場合は、PhoneGapプラグインを使用する必要があります。 https://github.com/marknutter/GCM-CordovaはGoogleのクラウドメッセージングをサポートしています。 https://github.com/purplecabbage/phonegap-plugins/tree/master/iOS/PushNotificationはApple Push Notificationをサポートしています。 – rmc47

+0

@maxhud ...続きます:PhoneGap BuildやVisual Studio用のNomad(公開:私はNomadチームにあります)など、ホストされたビルドサービスを使用している場合は、おそらく上記のようなネイティブプラグイン。その場合は、適切な料金でWebサービスをポーリングするだけです。 – rmc47

0

ブラウザやデバイスでのWebSocketサポートを参照してくださいするには、このリンクを参照してください:html5test.com site - をiOSの4.2 +はすでにのWebSocket

をサポートしていますがWebSocketを持つ単純なアプリケーションを開発する方法について説明しthis docを参照してください。

残念ながら、コンテンツはポルトガル語(ブラジル)の言語ですが、私が答えるコメントを残すことができます。

+0

私はアンドロイドアプリを最初に開発していますので、ありがとうございます。探す – maxhud

0

「ローカルのPHPファイルへのアクセス」とはどういう意味ですか? node.jsとWebソケットの使用も相互排他的ではありません。

サーバーの実装について決定していない場合は、node.jsまたはASP.NETのいずれかを選択できます。

node.jsは、クライアント実装を抽象化するSocket.ioのソケットをサポートしています。サポートがある場合はWebSocketを使用し、それ以外の場合は長いポーリングに戻ります。

ASP.NETには、SignalRという名前のライブラリがあります。このライブラリは、.NETプラットフォームと同様の機能を果たします。

4

iOSとAndroidでPhoneGapでWebSocketを使用できます。 WebSocketは、Safari内のiOS上でネイティブにサポートされています。 Androidの場合、ポリフィルを使用する必要があります。

参照:https://stackoverflow.com/a/13527585/39904

答えは上記のPhoneGapが使用するのAndroidのWebView内のWebSocketオブジェクトが利用できるようにする方法についての情報を提供し、また、あなたが始めるのに使用できるサンプルプロジェクトへのリンクを提供します。

WebSocketは、「Comet」ハックの解決策として開発されました。そのようなものとして、クライアントとサーバとの間のリアルタイムの双方向通信のための非常に短い待ち時間の解決策を提供する。これは、複数のHTTP接続を開いたり閉じたりするのではなく、単一の接続を開いたままにしておくので、帯域幅が小さく、リソースの使用量が少ないこと(モバイルのバッテリー)を意味します。一定の間隔で要求を行うポーリングソリューションは、WebSocketソリューションよりもはるかに速くバッテリを放電させる可能性があります。低い間隔でポーリングしている場合は、使用状況によって異なります。

ネットワークとネットワークタイプ(WiFi - > 3G - > WiFi)の間で変更するWebSocketに関しては、ネイティブにWebSocketsを使用している場合は、oncloseを検出して再接続する必要があります。また、最良の接続タイプを決定する必要があります。安全でない(WS)または安全な(WSS)。一部のモバイルネットワークプロバイダがWS接続を妨害する透過プロキシを使用するため、WSS for mobileを使用することを強くお勧めします。これは複雑に聞こえるかもしれませんが、これを処理する数多くのライブラリがあります。 Pusher JavaScript library注:私はプッシャーのために働いています)。このようなライブラリは、WebSocket接続が発生しない環境では、効率の悪いHTTPベースのソリューションに代替することもできます。

realtime web technology guideも参照してください。

私はそれは、デバイスが接続を変更し、私はWebSocketをを使用していた時にどうなるどう不定期単一の通知

関連する問題