Broker
MQTT에서는 발행자와 구독자 사이에 브로커가 존재한다는 사실을 우리는 이미 안다.
이 브로커는 그 자체로 구독자이며, 발행자이기도 하다.
여러 프로그램들이 개발되었고, 배포되고 있으나 내가 사용할 프로그램은 Mosquitto이다.
모기가 여어로, mosquito 이다. t가 하나인데, MosQuiTTo 로 만들기 위해 의도적으로 t를 2개 쓴 것이 아닌가 싶다.
이런걸 보면 프로그래머들의 재치는 참, 대단하다.
브로커를 다운받고, 설치해보자.
위의 페이지에서 각자 운영 체제에 맞는 설치 파일을 받도록 하자.
윈도우의 경우, 실행하면 위와 같은 페이지가 뜬다.
두 링크르 따라 들어가서 필요한 파일들을 다운받자.
OpenSSL은 Light 버전을, pthreads는 pthreadVC2.dll 파일만 받으면 된다.
http://slproweb.com/products/Win32OpenSSL.html
ftp://sources.redhat.com/pub/pthreads-win32/dll-latest/dll/x86/
설치를 마쳤다면, OpenSSL도 설치해주어야 하는데,
위와 같이 설치해주어야 dll 파일을 찾기가 편하다.
그리고 다음 위치에서, 파일들을 모스키토 설치 폴더로 옮겨주면 된다.
C:\OpenSSL-Win32\bin (OpenSSL 설치폴더)에서
ssleay32.dll / libeay32.dll 파일을
C:\Program Files (x86)\mosquitto (Mosquitto 설치 폴더) 로 복사해준다.
또한 다운받은 pthreadVC2.dll 파일도 집어넣어주자.
그럼 설치는 끝났다.
실제로 한번 테스트를 해보자.
테스트
CMD 커맨드창을 통해서 모스키토를 사용할 수 있다.
브로커와 클라이언트 모두 사용할 수 있는데, 각각
브로커 : mosquitto
구독 : mosquitto_sub
발행 : mosquitto_pub
파일을 실행하면 할 수 있다.
위의 창은 Broker 창이다.
> mosquitto -v
위의 명령어로 실행할 수 있는데, -v 는 verbose로, 프로그램이 실행되는 모든 것을 보여달라는 뜻이다.
-v를 실행하지 않으면 브로커는 아무 내용도 보여주지 않고 전달해주는 역할만 한다.
위의 내용들을 보면, 1883 포트로 소켓을 열었고, ::1 (IPv6에서 루프백 아이피) 에서 새로운 연결이 시도되었다.
연결이 성공되어서 CONNACK을 보내주었고, 해당 클라이언트는 Subscribe 메시지를 보냈다.
즉 한 클라이언트가 연결을 성공하여 /test 라는 토픽을 구독하기 시작하였다.
그 아래는 발행을 하는 것이다.
위의 사진은 sub / pub의 사진이다.
위의 사진은 sub, 아래 사진은 pub이다.
공통적으로 사용되는 옵션은
-h <호스트> -t <토픽> 이다.
현재 내 아이피에서 브로커가 실행중이므로, 호스트는 localhost이고, topic은 테스트를 위하여 /test를 사용하였다.
pub는 이름에서 알 수 있듯이 Publish를 위한 프로그램이며, /test의 토픽에
-m <메시지> 옵션을 통해서 Hello DalkomIT World 라는 메시지를 보냈다.
보내는 것에 성공해서 위의 sub 창에 해당 메시지가 도착한 것을 볼 수 있다.