1

現在、HTML5 と Javascript を使用してPhonegapでクロスプラットフォーム モバイル アプリを実装しています。通信とデータ交換のために、 Websocketsを使用してバックエンド サーバーへの接続を確立することにしました。デフォルトでは、Websocket は Blackberry および iOS ブラウザでサポートされています。Androidの場合、websocket を Android Java コードに統合し、Javascript を使用して Phonegap で実行する有望なプラグインがいくつかあります。私はこれを選びました:

websocket-android-phonegap

そのプラグインを Android プロジェクトに統合し、readme のすべての手順に従いました。次に、Android 4.0.3 を搭載した物理デバイス Samsung Galaxy Nexus でテストしました。それはうまく機能し、Blackberry と iOs の使用に目に見える違いはありませんでした。また、アプリを Samsung Galaxy Tab 2 に展開しました

OS バージョンが 4.0.3 (4.1.2 および 4.2.2 の testet) よりも高い Android デバイスにアプリをデプロイすると、問題が発生します。Android 4.2.2 で Samsung Galaxy Nexus を使用すると、問題が発生することさえあります。

興味深いのは、OS バージョン 4.2.2 に基づく Android プロジェクトを自動的に作成する Phonegap 2.6.0 を使用することです!!

問題は、プロジェクトのネイティブ Android 部分内の Websocket サーバーが、要求元のクライアントへの接続を開くことができないことです。通常、クライアントは接続を開くリクエストを送信し、サーバーはコールバックを介して接続が確立されたことをクライアントに通知します。

Android 4.0.4+ が使用されている場合、サーバー接続は接続を開く代わりに 404 BAD REQUEST メッセージを返します。

その問題のため、他のプラグインをいくつか試しました。実際、見つけたすべてのプラグインを試しました。Android 4.0.3 ではすべて正常に動作しましたが、それ以降のバージョンでは動作しませんでした。

websocket-plugin 2 を試してみた

websocket-plugin 3 を試してみた

websocket-plugin 4を試しました

websocket-plugin 5を試しました

その特定のトピックの経験があり、ヒントを教えてくれる人はいますか? Android 4.0.4+ 用の有効な websocket プラグインが利用できないとは想像できません!

4

2 に答える 2

0

私も同様の問題に直面しましたが、これは次の 2 つの方法で修正できます。

  • ロングポーリングへのフォールバックが可能な場合は、正常に動作します。これを試してみてください。テクノロジーのダウングレードになるため、私の側からはお勧めしません。

  • Android バージョン 4.1 および 4.2 を搭載した Samsung および LG デバイスには、webSocket の実装にバグがあります。これは私の側でテストされており、同じバージョンの Google デバイス (Nexus) で確認できれば動作するはずです。このバグを取り除くには、webSocket 経由で接続中にタイムアウトを設定する必要があります。

以下のリンクを参考にしてください。

リンク 1: https://github.com/zotonic/zotonic/issues/569 リンク 2: https://github.com/Modernizr/Modernizr/issues/1399

于 2015-08-20T23:26:18.863 に答える