

Courier เป็นห้องสมุด Kotlin สำหรับการสร้างการเชื่อมต่อที่ใช้งานได้ยาวนานโดยใช้โปรโตคอล MQTT
การเชื่อมต่อที่รันมานานเป็นการเชื่อมต่อแบบถาวรที่กำหนดไว้ระหว่างไคลเอนต์และเซิร์ฟเวอร์สำหรับการสื่อสารแบบสองทิศทางทันที การเชื่อมต่อที่ยาวนานจะได้รับการดูแลรักษาระยะเวลาสูงสุดที่เป็นไปได้ด้วยความช่วยเหลือของแพ็คเก็ต Keep Alive สิ่งนี้ช่วยในการประหยัดแบตเตอรี่และข้อมูลบนอุปกรณ์มือถือ
MQTT เป็นโปรโตคอลที่มีน้ำหนักเบามากซึ่งทำงานในรูปแบบการเผยแพร่/สมัครสมาชิก มันถูกออกแบบมาสำหรับการเชื่อมต่อกับตำแหน่งระยะไกลซึ่งจำเป็นต้องใช้ "รหัสเล็ก ๆ น้อย ๆ " หรือแบนด์วิดท์เครือข่ายมี จำกัด
โปรโตคอลมักจะทำงานผ่าน TCP/IP; อย่างไรก็ตามโปรโตคอลเครือข่ายใด ๆ ที่ให้การเชื่อมต่อที่ไม่ได้รับการสั่งซื้อ, ไม่สูญเสีย, สองทิศทางสามารถรองรับ MQTT
MQTT มี 3 ระดับ QoS ในตัวสำหรับการส่งข้อความที่เชื่อถือได้:
QoS 0 (มากที่สุดครั้งเดียว) - ข้อความจะถูกส่งเพียงครั้งเดียวและลูกค้าและนายหน้าไม่ได้ทำตามขั้นตอนเพิ่มเติมเพื่อรับทราบการส่งมอบ (ไฟและลืม)
QoS 1 (อย่างน้อยหนึ่งครั้ง) - ข้อความจะได้รับการทดลองอีกครั้งโดยผู้ส่งหลายครั้งจนกว่าจะได้รับการรับทราบ (รับทราบการจัดส่ง)
QOS 2 (หนึ่งครั้ง) - ผู้ส่งและผู้รับมีส่วนร่วมในการจับมือสองระดับเพื่อให้แน่ใจว่าได้รับข้อความเพียงฉบับเดียวเท่านั้น
ค้นหาเอกสารโดยละเอียดที่นี่ - https://gojek.github.io/courier-android/
ตัวอย่างการจัดส่งแบบ end-to-end-https://gojek.github.io/courier/docs/introduction
ทำความสะอาด API
Adaptive Keep Alive
อะแดปเตอร์ข้อความและสตรีม
ร้านค้าสมัครสมาชิก
การเชื่อมต่อใหม่และสมัครใหม่
การคงอยู่ของฐานข้อมูล
การจัดการแรงดันแบ็ค
Alarm, Timer & Workmanager Ping ผู้ส่ง
mqtt chuck
รายละเอียดเพิ่มเติมเกี่ยวกับคุณสมบัติในห้องสมุด 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 สำหรับ 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)อ่านคู่มือการบริจาคของเราเพื่อเรียนรู้เกี่ยวกับกระบวนการพัฒนาของเราวิธีการเสนอการแก้ไขข้อผิดพลาดและการปรับปรุงและวิธีการสร้างและทดสอบการเปลี่ยนแปลงของคุณไปยังห้องสมุด Android Courier
โมดูลจัดส่งทั้งหมดยกเว้น PAHO ได้รับใบอนุญาต MIT Paho ได้รับใบอนุญาต Eclipse