問題タブ [androidasync-koush]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - AndroidAsync: websocket 接続の設定に失敗しました
私は、データを転送するための Web ソケット接続を確立したバックエンド サーバーのセットがある製品に取り組んでおり、そのためにAndroidAsync(V2.1.6)クライアント ライブラリを使用しています。これらのサーバーは、さまざまなバージョンの tomcat で実行されています。
Android側からは正常に動作しており、今日まですべてのサーバーで問題なくwebsocketが確立されていましたが、現在、それらのサーバーの1つで接続を確立できません。
ジレンマは、Android 側からもサーバー側からもコードに変更がないことです。同じコードは、この特定のサーバーではなく、すべてのサーバーで正常に機能します。
何時間もの調査の結果、接続が失敗しているサーバーが、最新の tomcat 構成と、他のすべてのサーバーで使用していない同じtomcat バージョン (V8.0.23)で最近更新されたことがわかりました。そして、サーバー担当者の 1 人が、変更ログを分析して、Tomcat の Web ソケットに関連するいくつかの変更があることを知りました。
この問題を調査して取り除くためにあらゆることを行いましたが、問題を解決できません。
そのサーバーで AndroidAsync を使用して接続しようとしたときのサーバーからのスタックトレース:
お分かりできると良いのですが。どんな種類の助けも素晴らしいでしょう。ありがとう。
android - Koushik Dutta による Android Async ライブラリでのハートビート間隔の設定
Android SocketIO クライアント ライブラリとして com.koushikdutta.async:androidasync:2.1.3 を使用しています。ライブラリでデフォルトのハートビート間隔を変更する方法はありますか?
android - AndroidAsync 切断時間が非常に長いのはなぜですか?
AndroidAsync koush 低レベル ネットワーク プロトコル ライブラリを使用しています。WebSocket でサーバーに接続しています。接続、メッセージの送受信、切断ができます。切断時間が非常に長いです。サーバーは、平均 59 秒間切断を検出しません。
問題を再現するために、WebSocket に接続し、承認し、10 秒ごとに ping を開始します。その後、機内モードをオンにすると、ネットワーク接続が切断されます。この時点で setClosedCallback メソッドが呼び出されます。このメッセージをログに記録する方法は次のとおりです。
これは、WebSocket が閉じたことを知らせるログ メッセージです。
WebSocket クローズ例外: recvfrom 失敗: ETIMEDOUT (接続タイムアウト)
ただし、サーバーは約 59 秒間切断メッセージを受信しません。私たちのサーバーはこれらのライブラリを使用しています:
- gevent==1.0
- gevent-websocket==0.9.2
- greenlet==0.4.2
私の側でこれをスピードアップする方法はありますか?サーバーの担当者が切断メッセージをより速く取得できるように、低い値に設定できるソケット レベルのタイムアウトはどこかにありますか?
android - Android koush/ion 投稿リクエストがファイアウォールによってブロックされている
サーバーに投稿リクエストを送信するためにkoush/ionライブラリを使用しています。自宅のwifi、友人のwifi、モバイルデータ、およびオフィスのwifiを除く他のモバイルデータを使用して動作します。
null を返しますが、なぜだろうと思っていました。どういうわけかエラーを出力することができ、WFilter が私の要求をブロックしたことが示されました。その後、ファイアウォールを管理しているオフィスの IT 担当者にリクエストのログを確認するよう依頼したところ、koush/ion からのストリーミング リクエストがブロックされていることがわかりました。ストリーミング フィルターを無効にすると、koush/ion を使用して投稿リクエストを再度送信できました。
私の質問は、ion/koush に、これが起こらないようにするために通常のコードに追加できるものはありますか? ポートが関係しているのかどうかはわかりませんが、オフィス以外のほとんどのインターネット接続で機能する簡単なコードを次に示します。
android - contentType application/json を使用して Android AsyncHttpServer に POST すると、リクエストの本文が null に設定されます
Android デバイスでAsyncHttpServerが動作しています。次のように設定された POST の reqquest コールバック メソッドがあります。
server はnew AsyncHttpServer()
、 mapper はnew ObjectMapper()
で始まる行にブレークポイントがList<T>
あり、次のように cURL を使用してサーバーにデータを POST しようとしています。
何らかの理由で、set を return に設定して投稿しているときに、Content-Type
コンテンツタイプをbody に変更すると、期待どおりに cURL を含む JSON データ セットが含まれますapplication/json
request.getBody()
。null
text/plain
なぜこれが起こるのか、どうすれば動作させることができContent-Type: application/json
ますか?
sockets - AndroidAsync TCP -- 書き込みを使用してソケットを検出する適切な方法が利用できなくなりましたか?
AndroidAsync ライブラリを使用して開かれた TCP ソケットが使用できなくなったことをクライアント側で確認する適切な方法は何ですか? これは、(プレーン TCP、非 AndroidAsync) サーバーが明示的にソケットのクローズを開始しなかった場合です (そのため、ClosedCallback は呼び出されません)。たとえば、サーバーがコールド リブートされた場合です。
DataCallback は、サーバーがデータを送り返す場合にのみ使用でき、エラー メッセージの受信には使用できないようです。
私にもそう思われる
例外もスローしません。
したがって、この時点では、クライアントが定期的にデータを書き込む場合でも、ソケットが使用できなくなったことを検出する方法がわかりません。