問題タブ [libmosquitto]

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.

0 投票する
1 に答える
55 参照

mosquitto - Mosquitto.h は「struct mosquitto」の内容を定義していません

私が理解している限り、クライアントが接続したときに、セッションが永続的であることを確認し、そうでない場合は、関心のあるトピックへのサブスクライブを実行する必要があります。Mosquitto バージョン 1.5 を使用しています。

API 呼び出しを使用してこのプロパティを確認する方法は見つかりませんでしたがclean_sessionstruct mosquitto. しかし、この方法でアクセスしようとすると:

不完全な型へのポインターを逆参照するエラーが発生します。mosquitto.h内にフィールドの定義がないと、正常に表示されますstruct mosquitto。というファイルmosquitto_internal.hには含まれていますが、アプリケーション プロジェクトに含めるようには設計されていないようです。

ここで何が問題なのですか?

更新 (@hardillb コメント後):clean_session (1) mosquitto構造体が に渡すものと同じであるというドキュメントが見つかりませんでしたmosquitto_new(2)ここのドキュメントによると

CONNACK メッセージには、次の 2 つのデータ エントリが含まれます。

  • セッション存在フラグ
  • 接続戻りコード

そして、「セッション存在フラグ」が接続コールバックデータまたは mosquitto 構造体自体のどこかにあることは論理的です。clean_sessionしたがって、構造体には connect 関数によって返される値があると推測しました。次に、同じソースは次のように述べています。

セッション存在フラグは、ブローカーがクライアントとの以前の対話から利用可能な永続セッションを既に持っているかどうかをクライアントに伝えます。クライアントが Clean Session を true に設定して接続すると、使用可能なセッションがないため、セッション存在フラグは常に false になります。クライアントが Clean Session を false に設定して接続する場合、次の 2 つの可能性があります。 clientId のセッション情報が利用可能な場合。ブローカがセッション情報を保存している場合、セッション存在フラグは trueです。

このフラグはどこにありsession_presentますか?アプリケーションは現在の接続が以前の接続の継続であり、同じトピックに再サブスクライブしないことを認識しますか?

0 投票する
0 に答える
69 参照

mqtt - mqtt ブローカーに接続されているクライアントの数に関する問題

1000 を超えるクライアント (パブリッシャー/サブスクライバー) を同時に mqtt ブローカーに接続しようとしています。接続が 343 クライアントに達した後、ソケット fd が 1024 を超え、クライアントが MQTT ブローカーから接続確認を受信して​​いません。利用可能なオープン ソケット fd を増やす方法はありますか?

システム: Ubuntu 16.04

構成:

猫/etc/sysctl.conf

cat /etc/security/limits.conf :

ulimit -a 結果

猫/proc/2628/制限

0 投票する
0 に答える
62 参照

python-3.x - LWT メッセージが間違った時間に到着する (ブローカー Mosquitto)

デバイスからメッセージを発行および受信するコードがあります。問題は、デバイスが突然接続を失った場合、デバイスの接続が切断されてからわずか 5 分後に lwt が到着することです。ライフタイム30秒。test.py:

mosquitto.conf:

これは、クライアントが LWT を送信する方法です。

ここで、最初の 0-qos、2 番目の 0-retained メッセージ

lwt時間を60秒に設定する設定が見つかりません