

Courierは、MQTTプロトコルを使用して長期にわたる接続を作成するためのKotlinライブラリです。
長期実行接続は、瞬時の双方向通信のためにクライアントとサーバーの間に確立された永続的な接続です。 Keep Aliveパケットの助けを借りて、可能な限り最大限の期間、長期走行接続が維持されます。これは、バッテリーとモバイルデバイスのデータを保存するのに役立ちます。
MQTTは、出版/サブスクライブメッセージングモデルで機能する非常に軽量なプロトコルです。 「小さなコードフットプリント」が必要なリモートロケーションとの接続またはネットワーク帯域幅が限られているために設計されています。
プロトコルは通常、TCP/IPで実行されます。ただし、順序付けられたロスレスの双方向接続を提供するネットワークプロトコルは、MQTTをサポートできます。
MQTTには、信頼できるメッセージ配信のために3つの組み込みQoSレベルがあります。
QOS 0(最大で1回) - メッセージは一度だけ送信され、クライアントとブローカーは配信を認めるための追加の措置を講じません(火災と忘却)。
QoS 1(少なくとも1回) - メッセージは、確認を受信するまで、送信者によって複数回再トリーされます(承認済み配信)。
QOS 2(正確に1回) - 送信者と受信機は、メッセージの1つのコピーのみが受信されるように2レベルの握手に従事します(保証された配達)。
ここで詳細なドキュメントをご覧ください-https://gojek.github.io/courier-android/
エンドツーエンドのクーリエの例-https://gojek.github.io/courier/docs/introduction
APIをきれいにします
アダプティブは生き続けます
メッセージ&ストリームアダプター
サブスクリプションストア
自動再接続と再サブスクライブ
データベースの持続性
バックプレッシャー処理
アラーム、タイマー、ワークマネージャーPing送信者
mqttチャック
Courier Libraryの機能の詳細については、こちらをご覧ください
ここにデモアプリケーションが追加され、HIVEMQパブリックブローカーとのクーリエが接続します。
Courier Libraryのすべてのアーティファクトは、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 )
}クーリエを使用して実装を作成します。
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()このオプションを使用すると、MQTT v3.1.1のConnectパケットにユーザープロパティを送信できます。
val connectOptions = MqttConnectOptions (
serverUris = listOf ( ServerUri ( SERVER_URI , SERVER_PORT )),
clientId = clientId,
.. .
userPropertiesMap = mapOf (
" key1 " to " value1 " ,
" key2 " to " value2 "
)
)
mqttClient.connect(connectOptions)私たちの貢献ガイドを読んで、開発プロセス、バグフィックスと改善を提案する方法、Courier Androidライブラリへの変更を構築およびテストする方法について学びます。
PAHOを除くすべてのクーリエモジュールは、MITライセンスを取得しています。 PahoはEclipseライセンスです。