低遅延データをサーバーに送信し、phonegapで返送するにはどうすればよいですか?
ローカルでphpファイルにアクセスできず、node.jsまたはWebSocketの経験がないことを考えると、どちらを使用すべきかわかりません。
WebSocketは、AndroidまたはiOSの古いバージョンのCordovaのブラウザーではネイティブにサポートされていません。つまり、クライアントでWebSocketを使用する場合は、PhoneGapプラグインを使用する必要があります。
詳細については、http://remysharp.com/2010/10/04/websockets-in-phonegap-projects/をご覧ください。
ただし、デバイスがネットワーク接続間を移動するとき(WiFi-> 3G-> WiFi)にWebSocketがどの程度回復する可能性があるかは(プラグインを使用しても)わかりません。したがって、単純なポーリングWebサービスを使用する方が信頼性の高いオプションになる可能性があります。ユーザーが動き回るときにアプリがデータの受信を継続する必要がある場合。
サーバーによって開始されたデータを受信する必要がある場合は、代わりにプッシュ通知の使用を検討してください。iOS(APN)とAndroid(C2DM)の両方がこれを行うためのAPIを提供し、アプリがサーバーを常にポーリングするよりもバッテリーをより効率的に使用します。
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が機能するという点では、WebSocketをネイティブに使用している場合は、を検出しonclose
て再接続する必要があります。また、最適な接続の種類を決定する必要があります。安全でない(WS)または安全な(WSS)。一部のモバイルネットワークプロバイダーはWS接続に干渉する透過プロキシを使用するため、モバイルにはWSSを使用することを強くお勧めします。これは複雑に聞こえるかもしれませんが、これを処理するライブラリがいくつかあります。Pusher JavaScriptライブラリなど(注:私はPusherで働いています)。このようなライブラリは、環境でWebSocket接続が発生しない場合に、効率の低いHTTPベースのソリューションへのフォールバックも提供します。
リアルタイムWebテクノロジーガイドも参照してください。
まれな単一通知の場合は、ネイティブプッシュ通知を検討する必要があるという@rmc47に同意します
ブラウザとデバイスによるWebSocketのサポートについては、次のリンクを参照してください:html5test.comサイト-iOS4.2以降はすでにWebSocketをサポートしています
WebSocketを使用して簡単なアプリケーションを開発する方法を説明しているこのドキュメントを参照してください。
残念ながら、内容はポルトガル語(ブラジル)ですが、コメントを残してお答えします。
「ローカルでPHPファイルにアクセスする」とはどういう意味かわかりません。node.jsとWebソケットの使用も相互に排他的ではありません。
サーバーの実装について決定を下していない場合は、node.jsまたはASP.NETのいずれかを選択できます。
node.jsは、クライアントの実装を抽象化するSocket.ioでソケットを適切にサポートしています。したがって、サポートがある場合はWebSocketを使用し、そうでない場合は長いポーリングにフォールバックします。
ASP.NETには、.NETプラットフォームに対して同様のことを行うSignalRと呼ばれるライブラリがあります。