티스토리 뷰
STOMP을 Swift 환경에서 사용하는 방법에 대해서 알아보겠습니다.
API | DESC |
StompClientLib | https://github.com/WrathChaos/StompClientLib |
위에 명시된 라이브러리를 Android .gradle
에 dependencies
합니다.
STOMP Client
STOMP Client 사용법은 다음과 같이 나눌 수 있습니다.
// 1. INIT
let url = NSURL(string: "ws://[도메인]/connect/websocket")
let intervalSec = 1.0
public var soketClient = StompClientLib()
// 2. CONNECT
func registerSocket(){
if(soketClient.isConnected()){
disconnectSocket()
}
soketClient.openSocketWithURLRequest(request: NSURLRequest(url: url as! URL), delegate: self)
}
// 3. DELEGATE
func stompClientDidDisconnect(client: StompClientLib!) {
print("Socket is Disconnected")
}
func stompClientDidConnect(client: StompClientLib!) {
print("Socket is connected")
}
func serverDidSendReceipt(client: StompClientLib!, withReceiptId receiptId: String) {
print("Receipt : \(receiptId)")
}
func serverDidSendError(client: StompClientLib!, withErrorMessage description: String, detailedErrorMessage message: String?) {
print("Error Send : \(String(describing: message))")
if(!soketClient.isConnected()){
reconnect()
}
}
func serverDidSendPing() {
print("Server ping")
}
// 3. SUBSCRIBE
soketClient?.subscribe(destination: "[destination]")
// 4. SEND
stomp.send("/app/[destination]", "[MESSAGE]").subscribe {
if(it){}
}
STOMP Init
Stomp 초기화 작업을 합니다.
여기서 ws 뒤에 채팅서버 도메인을 입력하면 됩니다.
http 로 시작한다면 ws 로, https 로 시작 시 wss로 작업하셔야 합니다.
let url = NSURL(string: "ws://[도메인]/connect/websocket")
let intervalSec = 1.0
public var soketClient = StompClientLib()
Connect
채팅 서버에 연결은 soketClient.openSocketWithURLRequest
로 합니다.
STOMP 상태에 따라 delegate로 받게 됩니다.
func registerSocket(){
soketClient.openSocketWithURLRequest(request: NSURLRequest(url: url as! URL), delegate: self)
}
StompClientLibDelegate
STOMP 상태에 따른 콜백은 StompClientLibDelegate 을 통하여 받게 됩니다.
func stompClientDidDisconnect(client: StompClientLib!) {
print("Socket is Disconnected")
}
func stompClientDidConnect(client: StompClientLib!) {
print("Socket is connected")
}
func serverDidSendReceipt(client: StompClientLib!, withReceiptId receiptId: String) {
print("Receipt : \(receiptId)")
}
func serverDidSendError(client: StompClientLib!, withErrorMessage description: String, detailedErrorMessage message: String?) {
print("Error Send : \(String(describing: message))")
}
func serverDidSendPing() {
print("Server ping")
}
Subscribe
채널 구독하는 방법은 soketClient?.subscribe(destination: "[destination]")
를 하면 됩니다.
예를들어 방이름 1004 채널을 구독 한다면 다음과 같이 표현 할 수 있습니다.
- 방이름 : 1004
- 동작 : 방을 구독한다.
soketClient?.subscribe(destination: "1004")
Send
stomp.send("/app/[destination]", "[MESSAGE]")
형태로 구성되어 있으며 MESSAGE 는 메시지 내용 뿐만 아니라 각 정책에 맞게 JSON String으로 데이터를 전달하셔도 됩니다.
한가지 예로써 "안녕"이라는 문자를 보낸다면 다음과 같이 표현할 수 있습니다.
예제 소스 설명
- 동작 : "안녕" 이라는 메시지를 채팅방에 보낸다.
let dto = StompSendDTO(message: "안녕")
soketClient?.sendJSONForDict(dict: dto.nsDictionary, toDestination: sendToDestination)
struct StompSendDTO {
var message : String? = ""
var dictionary: [String: Any] {
return ["message": message]
}
var nsDictionary: NSDictionary{
return dictionary as NSDictionary
}
}
마무리
간단히 STOMP 라이브러리를 활용한 init, connect, subscript, send 방법을 알아봤습니다.
실시간 처리 시 STOMP는 도움이 많이 될 것으로 판단 됩니다.
참고
'프로그래밍 > iOS' 카테고리의 다른 글
[SWIFT] FileUpload (octet-stream) 간단히 살펴보기 (2) | 2020.04.21 |
---|---|
iOS Shared Extention App Build Issue (0) | 2019.01.04 |
[SWIFT] 메일 보내는 방법 알아보자 (0) | 2018.12.21 |
내부 배포용 앱 만들기(Enterprise) (0) | 2018.12.02 |
[SWIFT]클로저 (0) | 2018.10.24 |
- push
- 점수판
- 미션차이나센터
- 탁구
- IOS
- 스코어헬퍼
- 임용고시
- Android Studio
- 디자인패턴
- 알고리즘
- DI
- flutter
- 코틀린
- java
- 패턴
- IT
- issue
- view
- Android
- swift
- RXjava
- MCC
- 선교
- 고시문
- Kotlin
- missionchina
- 고시문헬퍼
- missioon
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |