브로커 vs 클라이언트
- mqtt:
mqtt
는 MQTT 프로토콜을 구현한 클라이언트 라이브러리로, 브로커와 연결하여 메시지를 발행하고 구독합니다. 클라이언트 측에서 브로커와의 통신을 담당하며, 다양한 QoS(서비스 품질) 레벨을 지원합니다. - paho-mqtt:
paho-mqtt
는 MQTT 클라이언트 라이브러리로, 브라우저와 Java 환경에서 MQTT 프로토콜을 사용하여 브로커와 통신합니다. Paho 프로젝트의 일환으로, 안정적인 메시지 전송과 구독 기능을 제공합니다.
모듈화 및 확장성
- mqtt:
mqtt
는 클라이언트 라이브러리로, 프로토콜의 모든 기능을 포괄적으로 지원합니다. 그러나 모듈화가 덜 되어 있어 특정 기능만을 선택적으로 사용할 수는 없습니다. - paho-mqtt:
paho-mqtt
는 Paho 프로젝트의 일환으로 개발된 라이브러리로, 모듈화가 잘 되어 있어 필요에 따라 특정 기능만을 사용할 수 있습니다. 특히 웹 환경에서의 사용을 염두에 두고 설계되었습니다.
브라우저 지원
- mqtt:
mqtt
는 Node.js와 브라우저 모두에서 사용할 수 있는 클라이언트 라이브러리입니다. 브라우저 환경에서도 MQTT 프로토콜을 통해 브로커와 통신할 수 있습니다. - paho-mqtt:
paho-mqtt
는 브라우저와 Java 환경을 위한 클라이언트 라이브러리로, 특히 웹 애플리케이션에서 MQTT를 구현하는 데 적합합니다.
QoS(서비스 품질) 지원
- mqtt:
mqtt
는 클라이언트 측에서 QoS 레벨을 설정할 수 있으며, 브로커와의 통신 시 해당 레벨에 따라 메시지를 전송합니다. QoS 0, 1, 2를 모두 지원합니다. - paho-mqtt:
paho-mqtt
는 클라이언트 측에서 QoS 레벨을 설정하여 메시지를 발행할 수 있습니다. 브로커와의 통신 시 설정한 QoS 레벨에 따라 메시지가 전송됩니다.
코드 예제
- mqtt:
mqtt
클라이언트 예제const mqtt = require('mqtt'); const client = mqtt.connect('mqtt://broker.hivemq.com'); client.on('connect', () => { console.log('Connected to MQTT broker'); client.subscribe('test/topic', (err) => { if (!err) { client.publish('test/topic', 'Hello MQTT!'); } }); }); client.on('message', (topic, message) => { console.log(`Received message: ${message.toString()} on topic: ${topic}`); });
- paho-mqtt:
paho-mqtt
웹 클라이언트 예제<!DOCTYPE html> <html> <head> <script src="https://cdnjs.cloudflare.com/ajax/libs/paho-mqtt/1.1.0/mqttws31.min.js"></script> </head> <body> <script> const client = new Paho.MQTT.Client('broker.hivemq.com', 8000, 'clientId'); client.onConnect = () => { console.log('Connected to MQTT broker'); client.subscribe('test/topic'); client.publish('test/topic', 'Hello from Paho MQTT!'); }; client.onMessageArrived = (message) => { console.log(`Received message: ${message.payloadString}`); }; client.connect({ onSuccess: client.onConnect }); </script> </body> </html>