MQTT

airwalk·2023년 12월 22일

저전력 및 낮은 대역폭에서도 사용할 수 있도록 설계된 메시징 프로토콜

구조

  • publisher: 메세지를 발행하는 역할
  • subscriber: 메세지를 구독하는 역할
  • broker: 메세지를 publisher에서 받아와 subscriber에게 전달하는 역할

예를들어

  • MQTT클라이언트가 메시지를 특정 Topic에 발행하면 이 채널을 구독한 사람들에게 메시지가 간다.
  • 내가 인스타로 아이유 팔로우하기 (Sub)
  • 아이유가 게시글 올린다. (Pub)
  • 나에게 알림이 온다. (아이유 팔로우 하지 않은 사람에게는 알림이 가지 않는다.)

QoS

  • 0단계 : 메시지는 한 번만 보내면 클라이언트와 브로커는 전달 확인 응답을 위한 추가 단계를 밟지 않는다. 
  • 1단계 : 메시지는 확인 응답을 수신할 때까지 여러 번 송신자로부터 재시도된다.
  • 2단계 : 송신자와 수신자는 2단계 핸드셰이크에 참여함으로써 오직 하나의 메시지 사본만을 수신하는 것을 보장한다.

JS

  • mqtt 설치
npm install
  • mqtt 연결
const MQTTURL = `wss://${window.location.host}/mqtt`;
client.current = mqtt.connect(MQTTURL, {
  clientId: `clientID`, // 랜덤으로 만들어야 한다. 같은 ID로하면 끊긴다.
  username: 'username',
  password: 'password',
});
  • 구독
client.current.subscribe(topic, (err) => {
  if (err) console.log("구독실패")
})
  • 발행
client.current.publish(topic, message)

0개의 댓글