티스토리 뷰

안드로이드 MQTT를 이용한 간단 채팅 서비스 만들기


 MQTT는 Message Queueing Telemetry Transport의 약자로 일반적으로 IOT(Internet of Things)에서 많이 쓰입니다. 즉, IOT 제품들에 들어가는 소형 디바이스들의 통신에 적합한 메시징 프로토콜입니다. 

 안드로이드 앱을 하나 만들어보던 중 채팅 기능을 구현해 볼까 생각이 들었고, 최근은 아니지만 페이스북이 MQTT를 이용해서 메신저 서비스를 만들었다는 이야기가 생각이 났습니다.(지금도 사용하고 있는지는 잘 모르겠습니다.) 우선 제가 사용해 보았던 MQTT는 센서 모듈들이 여러개 있는 상태에서 Client가 컴퓨터로 모니터링 응용 어플리케이션을 실행하면 센서 값들을 MQTT Broker를 통해 전송받아 현재 시스템의 상황을 보여준는 것이였습니다. 여기서 MQTT가 무엇인지 감이 안오시는 분들도 있으니 간단하게 그림으로 살펴보겠습니다.





 MQTT는 위의 그림과 같이 Mqtt Client와 Mqtt Broker로 구성이 되어있습니다. Mqtt Broker의 경우 Client의 중계 역활을 해주고 있으므로 서버가 Broker 역활을 합니다. 다음으로 Mqtt Client는 Subscriber와 Publisher의 역활을 수행할 수 있습니다. Subscriber의 경우 구독을 의미하고 Publisher의 경우 발행자를 의미하므로 Publisher가 발행한 메시지를 Mqtt Broker를 통해 Subscriber가 받을 수 있습니다. 그럼 다음 그림을 통해서 어떠한 구분으로 Broker가 Pub Client의 메시지를 Sub Client에게 정확히 전달하는지 간단히 알아보겠습니다.





 그림에서 볼 수 있듯 Mqtt Client에게 Topic(토픽)을 정해줄 수 있습니다. 가장 왼쪽의 Pub Client에게 "/message"라는 Topic을 설정해두었습니다. 그리고 우측의 Sub Client 들은 한 Client는 "/message" 다른 Client는 "/different" Topic을 주었을 때, Pub Client가 "/message" Topic으로 발행한 메시지는 Broker를 통해 "/message" Topic을 구독하고 있는 Client에게만 전달을 하게됩니다. 여기서 Mqtt의 장점이 나오게 되는데 바로 "/message" Topic을 구독하고있는 Client라면 Broker를 통해 모두다 메시지를 받아 볼 수 있다는 것입니다.





 따라서 위와 같은  한 Client에서 전송한 내용을 다른 여러 Client들에게 전송 할 수 있습니다. 그리고 위의 그림들을 잘 보시면 화살표가 전부 양방향으로 표현한 것을 보실 수 있습니다. 이는 Client는 Subscriber인 동시에 Publisher가 될 수 있다는 것입니다!!!!! 그럼 MQTT에 대해서 간단히 알아보았으니 다음 글에서 안드로이드에서 MQTT를 적용하여 간단한 채팅 서비스를 만들어 보겠습니다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday