問題タブ [mqtt]
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 - ANR スタック トレースの解釈
Android の PAHO ライブラリから MQTT クライアントを実装しています。ときどき、メッセージを公開しようとしたときにアプリケーションがフリーズし (私が思うに)、何が起こっているのか理解できません。
また、長文になることをあらかじめお詫び申し上げます。重要なビットが何であるかは本当にわかりません.SO「スポイラー」タグ>!
は詳細を隠すために機能しません.
MQTT クライアントは別のスレッドで動作していますが、UI スレッドから mqtt クライアント インスタンスを呼び出しています。おそらくこれはロックアップを引き起こしますか?代わりに、クライアントをスレッドのインスタンスとして定義し、アクションをクライアントに転送するスレッド内のメソッドを呼び出す必要がありますか?
アプリがハングアップすると、しばらくすると ANR が作動し、アプリを閉じるように求められます。これを行うと、/data/anr/traces.txt からプロセスの次のスタック トレースを取得します。
厳密モードをオンにすると、ディスク書き込みについて警告するトレースがいくつか得られますが、どれも特に長くはありません。これらは厳密なモード トレースです:
編集:これがStrictModeを有効にする方法です
編集 2: 今後の参考のために、問題の原因を追加するために、検索エンジンが見つけられるように、ここに何かを入力する必要があると考えました。
問題は、私たちが持っていた Node.JS ベースのブローカー mqttjs にあることが判明しました。これは私たちの実装に過ぎない可能性があります。mqttjs 開発者の例はテストしていません。特定の数のメッセージが公開された後、ブローカーはトークンの公開と返却を停止しました。MQTT クライアントは別のスレッドで実行されていましたが、UI スレッドから呼び出されたため、いくつかの問題が発生しました。
とにかく、Mosquitto に変更し、今ではすべてがうまく機能しています。
java - Paho で接続が確立されたときのコールバック
私は Eclipse MQTT ライブラリ Paho を使用していますが、ブローカーへのクライアント接続がいつ確立されたかを判断する方法が見つかりません。現在これを行う方法があるかどうか誰かが知っていますか?
ドキュメントの MqttCallback クラスでこれに関する情報を見つけることができないようで、バグや機能のリクエストを見つけることもできません。
ありがとう。
gcc - Mosquitto と Cygwin
Cygwinを使用してWindowsでMosquittoを実行したいのですが、Mosquittoのサイトで説明されているように、CygwinをインストールしてMosquittoをダウンロードしました。
mosquitto のサイトから取った簡単なサンプル ファイルがあります。
この gcc ラインでコンパイルすると:
次のエラー出力が表示されます。
ここから先がどうなるかわかりません...
どんな種類の助けにも感謝します!
jms - Open MQ はどのトランスポート プロトコルを使用しますか?
IBM の担当者がMQTTについて話しているのを聞きました。彼は、MQTT は現在最も軽量なメッセージング プロトコルであると述べています。彼の議論は、1 つのメッセージに対して生成される最小のオーバーヘッドは 2 バイトであるというものでした。ただし、HTML5 WebSocket についてもまったく同じ (2 バイトのオーバーヘッド) と聞いたことがありますか? とにかく、メッセージング アプリケーションの JMS プロバイダーとしてOpen MQを使用する予定であるため、プロバイダーで使用するプロトコルに興味を持ちました。その質問に対する答えがどこにも見つからず、Open MQ のドキュメントと、Open MQ を JMS プロバイダーとして使用する GlassFish のドキュメントをグーグル検索しました。インターネット上のいくつかのブログ投稿などにはAMQPと書かれていますが、その声明を裏付ける確かな参照が見つかりません。
Open MQ が使用するプロトコルはどれですか? また、どのように知ることができますか?
android - Android のこの特定のユースケースで MQTT を実装する方法は?
私のユースケース: 私のアプリにログインしているユーザーは、別の Android デバイスでアプリにログインしている自分にメッセージを送信できる必要があります。ユーザーが複数のデバイスを持っている場合、メッセージを開くと、他のデバイスの通知が消える必要があります。
疑問:
デバイス間で特定のユーザーにデータを送信する方法は? GCM を使用してさまざまなデバイスのさまざまなユーザーにメッセージを送信する方法は理解していますが、これはかなり混乱しているようです。
十分なセキュリティを備えた MQTT でこれを達成するにはどうすればよいですか? セキュリティについてできる限り読んだ結果、MQTT はそれを担当しておらず、ブローカー レベルで独自のセキュリティ対策を実装する必要があるという結論に達しました。現在、Mosquitto ブローカーはユーザー名/パスワード認証を許可していますが、Oauth を実装するアプリの場合、ユーザー名/パスワードはかなり脆弱なようです。
または、XMPP に移行する必要がありますか?
android - Android 通知アプリを実装する最も電力効率の高い方法
MQTT メッセージで XML データを取得して通知を作成する Android 通知アプリを開発していますが、通知がクリックされたときにインテントを実行するためのデータも含まれています。ポーリング/プル メッセージングを使用するよりもプッシュ メッセージングを実装しました。これは、メッセージが到着するのを待って、それに対して何かを行う方が、更新のために Web サーバーをポーリングし、新しいデータがない可能性がある結果を解析するよりもはるかに効率的であると想定したためです。
ただし、Android のデフォルトの省電力スキームでは、電力を節約するために画面がオフになると Wi-Fi がオフになります。つまり、MQTT サーバーへの接続が切断されます。画面を再びオンにすると、サーバー接続が再確立され、MQTT サーバー上の最後のメッセージが配信されます。
だから今、私は選択に直面しています。サービス コードに Wi-Fi ロックを実装するか、アラーム マネージャーを使用して定期的にサービスを起動し、MQTT 公開を確認してから終了します。
このwifiウェイクロック対アラームマネージャーは、wifilocksが非常に電力効率が悪いため、アラームマネージャーを使用する必要があることを示唆しています。そうなると、プッシュ通知の「即時配信」という利点が失われ、効率的にデータをポーリングしています。Google のクラウド メッセージング/WhatsApp/Viber などのアプリは、Wi-Fi をアクティブにしておくことでデバイスをスリープさせ、バッテリーを消耗させずにインスタント メッセージングを行うにはどうすればよいでしょうか?