모스키토는 MQ Telemetry Trasport 프로토콜 버전 3.1 과 3.1.1 을 구현한 오픈소스 메세지브로커이다. MQTT 는 생산자/소비자 모델을 사용한 메세지 이동에 관한 가벼운 메소드를 제공한다. 이것은 저전력 파워센서 나 모바일 디바이스 , 임베디드 컴퓨터나 아두이노 마이크로 컨트롤러 같은 "디바이스 to 디바이스 " 간의 메세징을 처리하기에 적합하다.
Publish와 Subscriber 사이에 메세지를 관리하여 전송해주는 중앙 관리자이다.
brew install mosquitto
brew services start mosquitto
brew services stop mosquitto
brew services restart mosquitto
/opt/homebrew/opt/mosquitto/sbin/mosquitto -c /opt/homebrew/etc/mosquitto/mosquitto.conf
brew services start mosquitto
을 따로 명령 할 필요가 없다.터미널 창을 3개를 열고, 각각 브로커, 구독, 발행의 역할을 맡기로 했다.
앞의 비서비스 시작 명령어를 통하여 브로커를 실행해주자
👇 mosquitto_sub -h [주소] -p [포트] -t [주제, 방제목]
/opt/homebrew/Cellar/mosquitto/2.0.15/bin/mosquitto_sub -h localhost -p 1883 -t every
👇 mosquitto_pub -h [주소] -p [포트] -t [주제, 방제목] -m [메세지]
⇒ /opt/homebrew/Cellar/mosquitto/2.0.15/bin/mosquitto_pub -h localhost -p 1883 -t every -m "테스트 메세지”
every
토픽을 구독하는 터미널에서, every
토픽으로 발행한 메세지를 받을 수 있다.
웹에서 통신을 하려면 웹소켓을 이용하여 mqtt서버에 접근해야한다.
하지만 mosquitto의 경우에는 다이렉트로 mqtt와 통신을 하는 것이 디폴트이기 때문에, 몇가지 세팅을 해줘야 한다.
mosquitto.conf
파일의 내용을 다음과 같이 수정하여야 한다.mosquitto가 설치된 경로에서 mosquitto.conf
파일을 열어 몇가지를 적어야 한다.
listener 9001
protocol websockets
#mqtt
listener 1883
protocol mqtt
#allow_anonymous
이런식으로 써져 있을텐데, 주석처리를 지우고 allow_anonymous true
로 입력해주자
true
로 설정하면 아무나 브로커 서버에 접근이 가능하다.false
설정하면 아무나 브로커 서버에 접근이 불가능하다.이제 mosquitto를 활용하여, MQTT를 사용한 간단한 채팅앱을 만들어 보자!