티스토리 뷰

반응형

STOMP을 Android 환경에서 사용하는 방법에 대해서 알아보겠습니다.

소개할 라이브러리는 Android STOMP 라이브러리 중 kotlin으로 작성된 라이브러리로 fork 하여 사용하였습니다.

STOMP-KOTLIN 라이브러리

   
API DESC
stomp-client-for-kotlin(fork) https://github.com/FaithDeveloper/stomp-kotlin

위에 명시된 라이브러리를 Android .gradledependencies 합니다.



 

STOMP Client

 

STOMP Client 사용법은 다음과 같이 나눌 수 있습니다.

 

// 1. INIT
val url = "ws://[domain]/connect/websocket"
val intervalMillis = 1000L
val client = OkHttpClient()
val stomp = StompClient(url, intervalMillis, client)

// 2. CONNECT
stompConnection = stomp.connect().subscribe {
  when (it.type) {
    Event.Type.OPENED -> {}
    Event.Type.CLOSED -> {}
    Event.Type.ERROR -> {}
  }
}

// 3. SUBSCRIBE
stomp.join("/topic/[destination]")
.doOnError { error -> }
.subscribe { message -> }

// 4. SEND
stomp.send("/app/[destination]", "[MESSAGE]").subscribe {
  if(it){}
}

 

 

Stomp Init

 

Stomp 초기화 작업을 합니다.

여기서 ws 뒤에 채팅서버 도메인을 입력하면 됩니다.

http 로 시작한다면 ws 로, https 로 시작 시 wss로 작업하셔야 합니다.

 

val url = "ws://[domain]/connect/websocket"
val intervalMillis = 1000L
val client = OkHttpClient()
val stomp = StompClient(url, intervalMillis, client)



Connect

 

채팅 서버에 연결은 stomp.connect().subscribe 로 합니다.

Rx로 구성되어 있으며 STOMP 상태에 따라 콜백을 받게 됩니다.

stompConnection = stomp.connect().subscribe {
  when (it.type) {
    Event.Type.OPENED -> {
    }
    Event.Type.CLOSED -> {
    }
    Event.Type.ERROR -> {
    }
  }
}



Subscribe

 

채널 구독하는 방법은 stomp.join.subscribe 를 하면 됩니다.

예를들어 방이름 1004 채널을 구독 한다면 다음과 같이 표현 할 수 있습니다.

  • 방이름 : 1004
  • 동작 : 방을 구독한다.
stomp.join("/topic/1004")
.doOnError {
}
subscribe {
}

 

 

Send

 

stomp.send("/app/[destination]", "[MESSAGE]") 형태로 구성되어 있으며 MESSAGE 는 메시지 내용 뿐만 아니라 각 정책에 맞게 JSON String으로 데이터를 전달하셔도 됩니다.

한가지 예로써 1004 채널에 "안녕"이라는 문자를 보낸다면 다음과 같이 표현할 수 있습니다.

 

예제 소스 설명

  • 방이름 : 1004
  • 동작 : "안녕" 이라는 메시지를 채팅방에 보낸다.
stomp.send("/app/1004", "안녕").subscribe { }



마무리

 

간단히 STOMP 라이브러리를 활용한 init, connect, subscript, send 방법을 알아봤습니다.

공유 드린 내용은 통신의 기본적인 부분으로 각 어플리케이션에 맞게 구성하면 됩니다.



참고

 

STOMP-KOTLIN 라이브러리

STOMP-JAVA / NaikSoftware

반응형
댓글