

Courier ist eine Kotlin -Bibliothek zum Erstellen von Langzeitverbindungen mithilfe des MQTT -Protokolls.
Langzeitverbindung ist eine anhaltende Verbindung zwischen Client und Server für sofortige bidirektionale Kommunikation. Eine langjährige Verbindung wird mit Hilfe von Keep Leavy -Paketen für eine maximal mögliche Dauer beibehalten. Dies hilft beim Speichern von Akku und Daten auf mobilen Geräten.
MQTT ist ein extrem leichtes Protokoll, das beim Veröffentlichen/Abonnieren von Messaging -Modell arbeitet. Es ist für Verbindungen mit entfernten Standorten ausgelegt, an denen ein "kleiner Code -Fußabdruck" erforderlich ist oder die Netzwerkbandbreite begrenzt ist.
Das Protokoll läuft normalerweise über TCP/IP. Jedes Netzwerkprotokoll, das geordnete, verlustfreie, bidirektionale Verbindungen bereitstellt, kann jedoch MQTT unterstützen.
MQTT verfügt über 3 integrierte QoS-Ebenen für eine zuverlässige Nachrichtenzustellung:
QoS 0 (höchstens einmal) - Die Nachricht wird nur einmal gesendet und der Kunde und der Broker unternehmen keine zusätzlichen Schritte, um die Lieferung zu bestätigen (Feuer und vergessen).
QoS 1 (mindestens einmal) - Die Nachricht wird vom Absender mehrmals übergeben, bis die Bestätigung eingegangen ist (bestätigte Lieferung).
QoS 2 (genau einmal) - Der Absender und der Empfänger betreiben einen zweistufigen Handschlag, um sicherzustellen, dass nur eine Kopie der Nachricht empfangen wird (versicherte Lieferung).
Hier finden Sie die detaillierte Dokumentation hier - https://gojek.github.io/courier-android/
Beispiel für End- und End-Kurier-https://gojek.github.io/courier/docs/Introduction
Saubere API
Adaptiv halten am Leben
Nachrichten- und Streamadapter
Abonnementgeschäft
Automatische Verbinde und Wiederbelebung
Datenbank Persistenz
Handhabung des Rückdrucks
Alarm, Timer & Workmanager Ping Sender
Mqtt Chuck
Weitere Details zu Funktionen in der Kurierbibliothek finden Sie hier
Hier wird eine Demo -Bewerbung hinzugefügt, wodurch eine Kurier -Verbindung zu einem HIVEMQ Public Broker hergestellt wird.
Alle Artefakte der Kurierbibliothek sind über Maven Central erhältlich.
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 "
}Deklarieren Sie eine Serviceschnittstelle für Aktionen wie Senden, Empfangen, Abonnieren, Abbestellen:
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 )
}Verwenden Sie Courier, um eine Implementierung zu erstellen:
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()Mit dieser Option können Sie Benutzer-Properties in Connect-Paket für MQTT v3.1.1 senden.
val connectOptions = MqttConnectOptions (
serverUris = listOf ( ServerUri ( SERVER_URI , SERVER_PORT )),
clientId = clientId,
.. .
userPropertiesMap = mapOf (
" key1 " to " value1 " ,
" key2 " to " value2 "
)
)
mqttClient.connect(connectOptions)Lesen Sie unseren Beitragsleitfaden, um über unseren Entwicklungsprozess zu erfahren, wie Sie Fehler und Verbesserungen vorschlagen und Ihre Änderungen in der Kurier -Android -Bibliothek erstellen und testen können.
Alle Kuriermodule außer PAHO sind MIT lizenziert. Paho ist in der Sonnenstock lizenziert.