Mqtt는 경량 메시지 프로토콜입니다. 상대적으로 가볍습니다. 그래서 주로 IoT 장치와 클라우드 애플리케이션 간의 효율적인 데이터 교환을 위해서 사용합니다.

broker(브로커) - mqtt서버 ,장치와 장치를 연결해줍니다.
publish(발행) - client가 서버에 메시지를 보냅니다.
subscribe(구독) - client가 서버로부터 메시지를 받습니다. 받는 client는 subscriber(구독자)라고 합니다.
topic - 메시지를 보낼때 topic으로 구분해서 보냅니다.
qos - Quaility of Service 의 약자로서, 메시지의 품질을 나타냅니다. 0,1,2로 구분되며, 레벨이 높을수록 서버에서 처리할 내용이 많아집니다.
맥 터미널에서 복사 붙여넣기 해주세요
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install mosquitto
/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
위와같이 터미널에서 순차적으로 실행시킨다면, mqtt 브로커가 잘 실행되는것을 잘 확인할 수 있습니다.

mqtt 익스플로러는 mqtt 브로커와 연결하여 mqtt메시지를 잘 볼수 있도록 하는 프로그램입니다.
이곳에서 new connection을 눌러서 Host에 localhost를 작성하면 구독해서 확인할 수 있습니다.
npm init -y
npm install mqtt --save
publisher.js
const mqtt = require("mqtt")
const client = mqtt.connect('mqtt://localhost:1883')
const message={
a:1,
b:2
}
setInterval(
() => client.publish('topic', JSON.stringify(message)
), 10000)
10초 한번씩 간단한 JSON을 발행하는 소스코드이다.
subscriber.js
const mqtt = require("mqtt")
const client = mqtt.connect('mqtt://localhost:1883')
//mqtt가 연결되면 실행
client.on('connect', () => {
//mqtt가 연결되어있는지 확인
console.log(client.connected);
//topic 구독
client.subscribe('topic'); //topic 구독
//구독해놓은 메시지가 들어오면 실행
client.on("message", (topic, message) => {
console.log(topic, JSON.parse(message));
})
})

해당 사진과 같이 mqtt explorer 에서 토픽과 메시지 history와 함께 확인이 쉽게 되는 것을 볼 수 있습니다.