

Courier는 MQTT 프로토콜을 사용하여 장기적인 연결을 생성하기위한 Kotlin 라이브러리입니다.
장기 실행 연결은 즉각적인 양방향 통신을 위해 클라이언트와 서버간에 확립 된 연결입니다. Keep Alive Packets의 도움으로 가능한 최대의 지속 시간 동안 장기 연결이 유지됩니다. 이를 통해 모바일 장치에 배터리 및 데이터를 저장하는 데 도움이됩니다.
MQTT는 게시/가입 메시징 모델에서 작동하는 매우 가벼운 프로토콜입니다. "소형 코드 풋 프린트"가 필요한 원격 위치와 연결되거나 네트워크 대역폭이 제한되어 있습니다.
프로토콜은 일반적으로 TCP/IP를 통해 실행됩니다. 그러나, 순서, 무손실, 양방향 연결을 제공하는 모든 네트워크 프로토콜은 MQTT를 지원할 수 있습니다.
MQTT에는 안정적인 메시지 전달을위한 3 개의 내장 QOS 레벨이 있습니다.
QOS 0 (최대 한 번) - 메시지는 한 번만 전송되며 클라이언트와 브로커는 배달을 승인하기위한 추가 단계를 수행하지 않습니다 (화재 및 잊어 버립니다).
QOS 1 (적어도 한 번) - 승인이 접수 될 때까지 (확인 된 배송)까지 메시지를 발신자가 여러 번 다시 트립합니다.
QOS 2 (정확히 한 번) - 발신자와 수신기는 2 단계 핸드 셰이크를 사용하여 메시지 사본을 하나만 수신하도록합니다 (보장 된 배송).
자세한 설명서는 여기에서 https://gojek.github.io/courier-android/을 찾으십시오.
엔드 투 엔드 택배 예-https://gojek.github.io/courier/docs/introduction
깨끗한 API
적응 형을 유지하십시오
메시지 및 스트림 어댑터
가입 저장소
자동 재 연결 및 다시 구독
데이터베이스 지속성
배압 처리
알람, 타이머 및 작업 관리자 Ping Sender
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 Packet에서 사용자 비판을 보낼 수 있습니다.
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 라이센스입니다.