問題タブ [paho]
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.
mqtt - MqttClientのブロック解除方法の使い方
以下のコードを使用してmosquitto
ブローカーに接続しようとすると、ご存知のように、ブローカーへの接続に数秒/分かかる場合があり、その間ボタンを押して接続すると、接続が確立されるまでボタンが押されたままになり、接続が確立されるまで押したままになりますボタンを放して通常の状態に戻しました。私の知る限り、 と を使用してクライアントを接続する方法は 2 つpaho java API
ありblocking method
ますunblocking method
。unblocking method
私の質問は、 ?の使い方です。以下は、ブロッキング方法を使用する私の試みです
コード_1 :
python - Eclipse Paho Python クライアントが接続しない
以下のコードを実行しようとすると、画面が空白のままになり、クライアントがブローカーに接続されていることが示されません。
実行できたので、ブローカーが適切に実行されていることを確認できます
AndroidフォンのMyMQTTアプリから送信されたメッセージを取得します。また、これはすべて、mosquitto、mosquitto-clients、および paho-mqtt がインストールされたラズベリー pi 上にあることを忘れていました。
java - ActiveMQ + MQTT + 「ActiveMQ.Advisory.Connection」にサブスクライブ
これはコンテキストです:
Java アプリケーションは、MQTT (Paho 0.4.0) 経由で ActiveMQ 5.9.1 からトピック「ActiveMQ.Advisory.Connection」にサブスクライブします。
ActiveMQ との接続は正常に確立されています。このトピックでは、ActiveMQ での接続 (オープン/クローズ) に関する情報を提供していますが、私の問題は、キャッチしたメッセージが空であることです。
MQTT メッセージが到着しました[ActiveMQ/アドバイザリ/接続] メッセージ[]
MQTT を使用してそれらをキャッチする方法はありますか? または、そのためにJMSを使用する必要がありますか?
ありがとう、ジョン・アンダー。
javascript - MQTT Js Last Will Message が公開されない
私は以下のコードを持っています -->
クライアントを切断すると、作成したトピックに最後の意志メッセージが送信されると予想されます.. Paho の mqtt バージョン -3.1 を使用しています.. Websocket は正常に作成されていますが、最後の意志メッセージが表示されません ...
誰でもここを案内できますか?
全体像を追加する:
ローカル環境で IOT デバイスの現在のオン/オフ ステータスを収集し、 mqtt を介してトピック「IOT1」に発行する Python スクリプト p があります。デバイスに過負荷がかかるため、Python スクリプトを常に実行して IOT デバイスからステータスを取得したくありません。これを解決するには、「IOT1」トピックのアクティブなクライアントを見つけて、リクエストを送信するスレッドを実行または一時停止する必要がありますローカル環境の IOT デバイス .. これを知る最後の will メッセージ以外の方法はありますか?
c - PAHO 組み込み C ライブラリ Socket Recive の実装
カスタム デバイス (STM32F405/GPRS モジュール) に PAHO 組み込み C ライブラリを実装しようとしています。
私の主な問題は、バッファーにソースを使用するカスタム recv() 関数を作成することです。
PAHO ライブラリの例では、transport_getdata() 関数があります。トランスポート層を処理します。これはtranport_getdata()関数です。この例では、私が持っていないソケットライブラリを使用しています:(
ライブラリをプロジェクトに移植するには、my_recv() のような独自の recv() 関数を作成する必要があります。
Standardd socket Recv() 関数の説明によると、
Recv() は、ソースからバッファに書き込まれたメッセージの長さを返します。
そこで、 recv() を置き換えるために my_recv() を書き込もうとしました (ソケット ID と FLAG は必要ありません)。
TCP 着信データを処理し、GPRS モジュールを介してシリアル/TCP 透過接続を使用しています。
割り込みを使用して、シリアルからすべてのバイトを読み取り、serial_buffer に書き込まれたすべての受信バイトを読み取りました。
簡単なテストのために、TCP ソケット経由で「1234567890」を送信します。
簡単なテストコードは
私のシステムアウトは、
recv() 関数をよく理解しているかどうかはわかりません。これでアウトプットOKです。
それでも、PAHO ライブラリを使用して MQTT パッケージを処理することはできません。
android - Maven を使用して Win7 で Paho プロジェクトをビルドできない
PAHOを使用して、Android で MQTT プロジェクトを作成しようとしました。
説明に従って、ソースコードを自分のコンピューターに複製し、
mvn クリーン インストール
プロジェクトをビルドします。
私は org.eclipse.paho.mqtt.java-1.0.0 をダウンロードし、以下を取得することを期待しています:
- org.eclipse.paho.client.mqttv3-1.0.0.jar および
- org.eclipse.paho.android.service-1.0.0.jar
しかし、mvn clean install を実行した後、org.eclipse.paho.client.mqttv3-1.0.0.jar を取得できるため、プロジェクトをビルドできません。
メッセージ出力は次のとおりです。
この問題を解決するための提案を誰かに教えてもらえますか??
ありがとう!!
java - 接続後に MQTT サブスクライブ クライアントがメッセージを受信しない
私は MQTT を学ぼうとしていて、いじっています。パブリッシング用のクライアントとサブスクライブ用のクライアントを作成しました (以下を参照)。
サブスクライブ クライアントを実行してから (サブスクライブの実行中に) パブリッシュ クライアントを実行すると、すべて正常に動作します。サブスクライブ クライアントは、トピックに発行されたメッセージを正しく受信します。
しかし、最初にパブリッシュ クライアントを実行し (つまり、メッセージをトピックにパブリッシュ)、次にサブスクライブ クライアントを実行すると、メッセージを受信しません。
つまり、最初にサブ クライアントに接続し、サブ クライアントが接続されている間に pub クライアントでメッセージを発行すると、すべて正常に動作します。ただし、最初にメッセージを公開してからサブ クライアントに接続すると、メッセージを受信しません。私の理解では、クライアントと接続してトピックにサブスクライブすると、トピックに存在するメッセージを受信する必要があります。
同様の問題のように見えるものを見つけました: mqtt paho のサブスクライブされたトピックに既に発行されたメッセージを受信できませんが、そのケースは少し異なるようです。別の QoS 設定または cleanSession フラグを変更しようとしましたが、問題は解決しませんでした。
どんな助けでも大歓迎です!
パブリッシュ クライアント:
}
購読クライアント:
}
mqtt - ブローカーのタイムアウト/クライアントの切断時の Paho MQTT クライアントの動作
MQTT ブローカーまたはクライアントに問題がある場合、シナリオで問題を引き起こしている QoS2 レベルのメッセージが多数あります。これらの問題には、
- クライアントがサーバーのタイムアウトを認識し始める
- クライアントがしばらくの間ブローカーとの接続を失い (インターネット接続のダウン、ブローカーの問題など)、再接続します。
通常、MQTT クライアントがブローカーからタイムアウトまたはその他のエラーを受信し始めると、メッセージは永続ストレージ (進行中のメッセージ) に保存され、最終的に再発行されます。
ただし、Paho クライアントがブローカーへの接続を失った場合、メッセージは処理中と見なされなくなり、Paho によって保存されなくなります。その時点で、アプリはこれらのメッセージを (paho の外部で) 永続化し、それらを再公開する責任を負うようになります。
MQTT ブローカーが使用できなくなった場合、Paho MQTT クライアントは、これらの QoS2 レベルのメッセージが再配信されることを保証することはできません。
では、client.publish の結果が MqttException になり、Paho が飛行中のメッセージを永続化しなかった次のケースを区別するにはどうすればよいでしょうか。
そして、それが飛行中に持続した次の場所
もちろん、ブックキーピングを開始して、失敗したすべてのメッセージを個別に永続化することもできますが、そうすると QoS レベル 2 の重複が発生する可能性があります (メッセージは Paho と私自身の両方によって再発行されます)。
クライアントはどのようにプログラムする必要がありますか?
- 例外コードに基づいて、Paho と一緒に独自のメッセージ永続化を行う必要がありますか?
- connectionLost コールバックを考慮し、その時点から Paho は MQTT クライアントが再接続するまで何も保持しないと想定する必要がありますか?
- 公開する前に、クライアントが適切に接続されているかどうかを確認する必要がありますか? その場合、Paho はメッセージを永続化すると仮定しますか?
Paho によるいくつかの例外と永続化動作を次に示します。
- 接続が失われました (32109) : メッセージは paho によって保持されます
- クライアントは現在切断中です (32102) : メッセージは paho によって失われます
- サーバーからの応答を待機中にタイムアウトしました (32000) : メッセージは永続化されています
- クライアントが接続されていません (32104) : paho によってメッセージが失われました
ここでの Paho のベスト プラクティスにはどのようなものがありますか?