티스토리 뷰
STOMP을 Android 환경에서 사용하는 방법에 대해서 알아보겠습니다.
소개할 라이브러리는 Android STOMP 라이브러리 중 kotlin으로 작성된 라이브러리로 fork 하여 사용하였습니다.
API | DESC |
stomp-client-for-kotlin(fork) | https://github.com/FaithDeveloper/stomp-kotlin |
위에 명시된 라이브러리를 Android .gradle
에 dependencies
합니다.
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 방법을 알아봤습니다.
공유 드린 내용은 통신의 기본적인 부분으로 각 어플리케이션에 맞게 구성하면 됩니다.
참고
'프로그래밍 > Android' 카테고리의 다른 글
Window Manager을 활용한 디바이스 화면 상태 체크하기 (0) | 2020.06.05 |
---|---|
[Android] RecyclerView 깜박임 방지 방법 (0) | 2020.05.18 |
ProcessLifecycleOwner 사용해보기 (0) | 2020.03.26 |
크롬북(ChromeBook) 과 ADB IP 빌드 해보기 (0) | 2020.03.09 |
ViewTreeObserver 그게 뭔데? (0) | 2019.09.10 |
- 스코어헬퍼
- view
- missioon
- issue
- push
- RXjava
- 알고리즘
- flutter
- 고시문헬퍼
- IOS
- 탁구
- Kotlin
- 코틀린
- 점수판
- MCC
- swift
- 안드로이드
- 임용고시
- Android Studio
- 패턴
- Android
- DI
- java
- IT
- 디자인패턴
- 미션차이나센터
- missionchina
- 선교
- 고시문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |