MQTT: دریافت پیام های آفلاین

ساخت وبلاگ

من سعی می کنم تأیید کنم که اگر کارگزار هنگام آفلاین مشتری پیام دریافت کند ، پیام ها روی کارگزار صف می شوند و وقتی دوباره آنلاین می شود به مشتری ارسال می شود.

با این حال ، من می فهمم که کارگزار برای اتصال مجدد چیزی به مشتری ارسال نمی کند.

اینگونه است که من تست کردم: با استفاده از چهار پارامتر ذکر شده در بالا ، مشتری را به کارگزار وصل کنید. مشترک در مباحث مورد علاقه با QoS = 1 Client Client

با استفاده از یک برنامه مشتری دیگر و یک شناسه مشتری دیگر ، به پیام انتشار کارگزار به همان موضوعی که توسط مشتری آفلاین در حال حاضر مشترک شده بود ، متصل شوید. چند ثانیه صبر کنید ، اکنون مشتری آفلاین را با همان تنظیمات اتصال مانند گذشته دوباره وصل کنید.

نتیجه مورد انتظار: به محض برقراری اتصال دوباره ، مشتری پیامهایی را دریافت می کند که هنگام آفلاین به موضوع خود ارسال شده است.

نتیجه واقعی: مشتری هیچ پیام دریافت نمی کند. قادر است پیام های جدیدی را که پس از اتصال آن ارسال می شود دریافت کند ، اما هیچ پیام آفلاین وجود ندارد. **

من با استفاده از Wireshark تأیید کرده ام که بسته های ارسال مشترک و پیام ارسال شده به سرور دارای QoS = 1 هستند و پرچم جلسه تمیز در بسته اتصال نادرست است.

کارگزار: Mosquitto v1. 4. 11

پرونده پیکربندی MQTT:

pid_file /var/run/mosquitto. pid پایداری واقعی_لاکت/var/lib/mosquitto/log_dest file /var/log/mosquitto/mosquitto. log log_type debug listener 9001 protocol wepsocket listencockets ac l-acl acltr_anfifile mqttPassword_file/Path/to/Password_file 

دنبال کردن دوژ از 2 اوت 2018 ساعت 12:44 پرسید دوجو دوژو 5،263 4 4 نشان های طلا 46 46 نشان نقره 76 76 نشان برنز آیا هنگام اتصال مجدد ، به موضوع دوباره ارسال می کنید؟ 2 آگوست 2018 در 13:27

من نباید مجبور باشم زیرا قرار است کارگزار اشتراک قبلی من را به خاطر بسپارد زیرا حتی اتصال قبلی با پاکسازی = کاذب شروع شده است.

2 آگوست 2018 ساعت 16:46 به هر حال ، من نیز دوباره درخواست ارسال مجدد کردم. من هیچی ندارم 2 آگوست 2018 ساعت 16:46 سوال را با پرونده پیکربندی Mosquitto خود به روز کنید 2 آگوست 2018 ساعت 16:48 پیکربندی موجود را اضافه کرد 2 آگوست 2018 ساعت 16:54

1 پاسخ 1

مرتب شده توسط: تنظیم مجدد به طور پیش فرض

این یک مورد سوء رفتار با مشتریان GUI بود. سه تا ازآن ها!

من آن را ارسال می کنم تا دیگران وقت خود را در مورد چیزی مشابه هدر ندهند.

من سه مشتری را امتحان کردم ، همه همانطور که در زیر ذکر شد ، پروانه های مختلفی داشتند:

MQTT. FX: کارگزار بلافاصله پس از اتصال پیام را ارسال می کند اما موضوع در جلسه فعلی مشترک نشده است ، بنابراین MQTT. FX هیچ مکان مشخصی برای نشان دادن پیام دریافتی ندارد. بنابراین پیام را روی صفحه نشان نمی دهد. MQTT. FX همچنین با عضویت در موضوع سیاهههای مربوط به SYS که Wireshark را سیل می کند و پیام اصلی کارگزار در سیل بسته ها از بین می رود ، اشکال زدایی Wireshark را پیچیده می کند.

MQTT SPY: برخلاف MQTT. FX ، دارای یک برگه Catch All است ، بنابراین اگر کارگزار پیامی را ارسال کند که در جلسه فعلی مشترک نشده باشد ، آن را در برگه Catch All نشان می دهد. متأسفانه ، مجریان MQTT SPY تصمیم گرفته اند که برنامه آنها قبل از قطع ارتباط با همه موضوعات مشترک باشد. از آنجا که مشتری دیگر در این موضوع مشترک نیست ، Borker هیچ پیامی برای آن صف نمی کند.

لنز MQTT: دارای یک اشکال است. این تنظیمات اتصال را برای جلسه تمیز ذخیره نمی کند. حتی اگر جلسه تمیز را به False تنظیم کنید ، همیشه اتصال با Clean Session = True را باز می کند.

سرانجام ، من یک برنامه آزمایشی را با کتابخانه Paho Java نوشتم و همه چیز را همانطور که انتظار می رفت ، کار کردم.

من نمی دانم که چرا مشتری GUI برای MQTT اجرای مرجع وجود ندارد ، همه پیاده سازی های فعلی شکسته شده اند یا به طور غیر ضروری "هوشمند" هستند که شما را از آزمایش یک مورد تست قانونی جلوگیری می کند.

استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید

برچسب : نویسنده : مرجان شیرمحمدی بازدید : 34 تاريخ : جمعه 30 تير 1402 ساعت: 18:13