

Courier هي مكتبة Kotlin لإنشاء اتصالات طويلة المدى باستخدام بروتوكول MQTT.
الاتصال طويل المدى هو اتصال مستمر تم إنشاؤه بين العميل والخادم للاتصال الفوري ثنائي الاتجاه. يتم الحفاظ على اتصال طويل المدى لأقصى قدر ممكن من المدة بمساعدة حزم Keep Alive. هذا يساعد في حفظ البطارية والبيانات على الأجهزة المحمولة.
MQTT هو بروتوكول خفيف الوزن للغاية يعمل على نموذج المراسلة النشر/الاشتراك. إنه مصمم للاتصالات مع المواقع البعيدة حيث يلزم وجود "بصمة رمز صغيرة" أو أن عرض النطاق الترددي للشبكة محدود.
عادة ما يعمل البروتوكول عبر TCP/IP ؛ ومع ذلك ، فإن أي بروتوكول شبكة يوفر اتصالات مرتبة ، غير متطورة ، يمكن أن تدعم MQTT.
يحتوي MQTT على 3 مستويات مدمجة في جودة الخدمة لتسليم الرسائل الموثوق بها:
QOS 0 (على الأقل مرة واحدة) - يتم إرسال الرسالة مرة واحدة فقط ولا يتخذ العميل والوسيط أي خطوات إضافية للاعتراف بالتسليم (النار والنسيان).
QOS 1 (مرة واحدة على الأقل) - يتم إعادة تربية الرسالة من قبل المرسل عدة مرات حتى يتم استلام الإقرار (التسليم المعترف به).
QOS 2 (مرة واحدة بالضبط) - يشارك المرسل والمستقبل في مصافحة من مستويين لضمان استلام نسخة واحدة فقط من الرسالة (التسليم المؤكد).
ابحث عن الوثائق التفصيلية هنا - https://gojek.github.io/courier-droid/
مثال على الساعي النهائي-https://gojek.github.io/courier/docs/introduction
API نظيفة
التكيفي الحفاظ على قيد الحياة
محولات الرسائل والدفق
متجر الاشتراك
إعادة الاتصال التلقائي وإعادة الاشتراك
استمرار قاعدة البيانات
معالجة الضغط على الظهر
المنبه ، الموقت ومرسل Ping Sender
MQTT تشاك
يمكن العثور على مزيد من التفاصيل حول الميزات في مكتبة Courier هنا
تتم إضافة طلب تجريبي هنا مما يجعل Courier اتصالًا مع وسيط عام HiveMQ.
جميع القطع الأثرية من مكتبة Courier متوفرة عبر Maven Central.
repositories {
mavenCentral()
}
dependencies {
implementation " com.gojek.courier:courier:x.y.z "
implementation " com.gojek.courier:courier-message-adapter-gson:x.y.z "
implementation " com.gojek.courier:courier-stream-adapter-rxjava2:x.y.z "
}إعلان واجهة خدمة لإجراءات مثل الإرسال والاستقبال والاشتراك وإلغاء الاشتراك:
interface MessageService {
@Receive(topic = " topic/{id}/receive " )
fun receive (@Path( " id " ) identifier : String ): Observable < Message >
@Send(topic = " topic/{id}/send " , qos = QoS . TWO )
fun send (@Path( " id " ) identifier : String , @Data message : Message )
@Subscribe(topic = " topic/{id}/receive " , qos = QoS . ONE )
fun subscribe (@Path( " id " ) identifier : String ): Observable < Message >
@Unsubscribe(topics = [ " topic/{id}/receive " ])
fun unsubscribe (@Path( " id " ) identifier : String )
}استخدم Courier لإنشاء تنفيذ:
val mqttClient = MqttClientFactory .create(
context = context,
mqttConfiguration = MqttV3Configuration (
authenticator = authenticator
)
)
val courierConfiguration = Courier . Configuration (
client = mqttClient,
streamAdapterFactories = listOf ( RxJava2StreamAdapterFactory ()),
messageAdapterFactories = listOf ( GsonMessageAdapter . Factory ())
)
val courier = Courier (courierConfiguration)
val messageService = courier.create< MessageService >()messageService.subscribe( " user-id " ).subscribe { message ->
print (message)
}
messageService.unsubscribe( " user-id " )messageService.send( " user-id " , message)
messageService.receive( " user-id " ) { message ->
print (message)
} val connectOptions = MqttConnectOptions (
serverUris = listOf ( ServerUri ( SERVER_URI , SERVER_PORT )),
clientId = clientId,
username = username,
keepAlive = KeepAlive (
timeSeconds = keepAliveSeconds
),
isCleanSession = cleanSessionFlag,
password = password
)
mqttClient.connect(connectOptions)mqttClient.disconnect()يتيح لك هذا الخيار إرسال عروض المستخدمين في حزمة Connect for MQTT V3.1.1.
val connectOptions = MqttConnectOptions (
serverUris = listOf ( ServerUri ( SERVER_URI , SERVER_PORT )),
clientId = clientId,
.. .
userPropertiesMap = mapOf (
" key1 " to " value1 " ,
" key2 " to " value2 "
)
)
mqttClient.connect(connectOptions)اقرأ دليل المساهمة الخاص بنا للتعرف على عملية التطوير الخاصة بنا ، وكيفية اقتراح مجموعات Bugfixes والتحسينات ، وكيفية بناء واختبار التغييرات الخاصة بك على مكتبة Courier Android.
جميع وحدات البريد السريع باستثناء PAHO مرخصة معهد ماساتشوستس للتكنولوجيا. Paho هو Eclipse مرخص.