- 전체
- HTML
- Web Design (웹디자인)
- XE 응용 개발
- wordpress plugin dev
- Javascript & JavaScript Application
- MEAN Stack : full stack javascript
- angular js & ionic framework
- bootstrap
- WebGL, Three.js and Babylon.js
- restful api design
- mobile web
- node.js 응용
- Cloud Service 응용
- 웹 어셈블리 개발 [WASM, WebAssembly]
- 마이크로서비스, MSA (microservice architecture)
- WebGL / WebGPU
- next.js 개발
- micro frontend (마이크로프론트앤드)
- 전자상거래/쇼핑몰
- 서버 클라우드 (aws, azure, google)
node.js 응용 [node.js 응용] NodeJS 에서 mqtt 사용하기
2024.02.23 14:25
[node.js 응용] NodeJS 에서 mqtt 사용하기
1. MQTT란 무엇인가?
Mqtt는 경량 메시지 프로토콜입니다. 상대적으로 가볍습니다. 그래서 주로 IoT 장치와 클라우드 애플리케이션 간의 효율적인 데이터 교환을 위해서 사용합니다.
2. MQTT 기본 용어
broker(브로커) - mqtt서버 ,장치와 장치를 연결해줍니다.
publish(발행) - client가 서버에 메시지를 보냅니다.
subscribe(구독) - client가 서버로부터 메시지를 받습니다. 받는 client는 subscriber(구독자)라고 합니다.
topic - 메시지를 보낼때 topic으로 구분해서 보냅니다.
qos - Quaility of Service 의 약자로서, 메시지의 품질을 나타냅니다. 0,1,2로 구분되며, 레벨이 높을수록 서버에서 처리할 내용이 많아집니다.
2. MQTT 브로커 설치
- 맥에서 mqtt브로커를 설치하기 위해서는 홈브루를 설치해야 합니다.
홈브루 공식 홈페이지
맥 터미널에서 복사 붙여넣기 해주세요
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 홈브루가 설치되었으면 mqtt 브로커를 설치해줍니다. mqtt브로커로는 여러가지가 있지만 가장 유명한 mosquitto를 사용하였습니다.
brew install mosquitto
/usr/local/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
위와같이 터미널에서 순차적으로 실행시킨다면, mqtt 브로커가 잘 실행되는것을 잘 확인할 수 있습니다.
3.MQTT 익스프로러 설치
mqtt 익스플로러는 mqtt 브로커와 연결하여 mqtt메시지를 잘 볼수 있도록 하는 프로그램입니다.
이곳에서 new connection을 눌러서 Host에 localhost를 작성하면 구독해서 확인할 수 있습니다.
4.Node.JS에서 확인하기
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와 함께 확인이 쉽게 되는 것을 볼 수 있습니다.
[출처] https://velog.io/@hurjun/NodeJS-%EC%97%90%EC%84%9C-mqtt-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.