

Courier adalah perpustakaan Kotlin untuk membuat koneksi berjalan lama menggunakan protokol MQTT.
Long Running Connection adalah koneksi persisten yang ditetapkan antara klien & server untuk komunikasi dua arah instan. Koneksi yang berjalan lama dipertahankan untuk durasi maksimum yang mungkin dengan bantuan Paket Keep Alive. Ini membantu menghemat baterai dan data pada perangkat seluler.
MQTT adalah protokol yang sangat ringan yang berfungsi pada model pesan yang dipublikasikan/berlangganan. Ini dirancang untuk koneksi dengan lokasi jarak jauh di mana "jejak kode kecil" diperlukan atau bandwidth jaringan terbatas.
Protokol biasanya berjalan di atas TCP/IP; Namun, setiap protokol jaringan yang menyediakan koneksi dua arah yang tertib, lossless, dapat mendukung MQTT.
MQTT memiliki 3 level QoS bawaan untuk pengiriman pesan yang andal:
QoS 0 (paling banyak sekali) - Pesan hanya dikirim sekali dan klien dan broker tidak mengambil langkah tambahan untuk mengakui pengiriman (api dan lupa).
QoS 1 (setidaknya sekali) - Pesan tersebut dikeluarkan kembali oleh pengirim beberapa kali sampai pengakuan diterima (diakui pengiriman).
QoS 2 (tepat sekali) - Pengirim dan penerima terlibat dalam jabat tangan dua tingkat untuk memastikan hanya satu salinan pesan yang diterima (pengiriman terjamin).
Temukan dokumentasi terperinci di sini - https://gojek.github.io/courier-android/
Contoh Kurir End-to-End-https://gojek.github.io/courier/docs/introduction
API Bersih
Adaptif Keep Alive
Adaptor Pesan & Streaming
Toko berlangganan
Rekening & Kirim Kembali Otomatis
Kegigihan Basis Data
Penanganan tekanan balik
Pengirim Ping Alarm, Timer & WorkManager
MQTT Chuck
Rincian lebih lanjut tentang fitur di perpustakaan kurir dapat ditemukan di sini
Aplikasi demo ditambahkan di sini yang membuat koneksi kurir dengan broker publik HIVEMQ.
Semua artefak dari Perpustakaan Courier tersedia melalui 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 "
}Deklarasikan antarmuka layanan untuk tindakan seperti mengirim, menerima, berlangganan, berhenti berlangganan:
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 )
}Gunakan kurir untuk membuat implementasi:
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()Opsi ini memungkinkan Anda untuk mengirim properti pengguna dalam paket Connect untuk 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)Baca Panduan Kontribusi kami untuk mempelajari tentang proses pengembangan kami, cara mengusulkan perbaikan bug dan perbaikan, dan cara membangun dan menguji perubahan Anda ke perpustakaan Android Courier.
Semua modul kurir kecuali Paho berlisensi MIT. Paho berlisensi gerhana.