MQTT keepAlive

airwalk·2024년 3월 20일
  • keepAlive
    • 클라이언트와 브로커 간의 연결을 유지하기 위한 기능
    • MQTT 클라이언트가 브로커에게 정기적으로 신호를 보내어 연결이 활성화되어 있는지 확인하고, 필요에 따라 연결을 유지하거나 끊을 수 있도록 한다.
    • keepAlive는 일정한 간격으로 클라이언트가 브로커에게 PINGREQ 메시지를 보내는 방식이다.
    • 만약 브로커가 일정 시간 이내에 클라이언트로부터 PINGRESP 메시지를 받지 못하면, 브로커는 해당 클라이언트와의 연결을 끊을 수 있다.

사용

npm install mqtt

  • 기본옵션

    • 기본적으로 keepalive 값은 60임.
    const defaultConnectOptions = {
      keepalive: 60,
      reschedulePings: true,
      protocolId: 'MQTT',
      protocolVersion: 4,
      reconnectPeriod: 1000,
      connectTimeout: 30 * 1000,
      clean: true,
      resubscribe: true,
      writeCache: true
    }
  • 사용

    const client = mqtt.connect(MQTTURL, {
      clientId: `mqttjs_${Math.random().toString(16).substr(2, 8)}`, // id 값 겹치면 안됨
      username: mqttConfig.userName,
      password: mqttConfig.password,
      keepalive: 60, // 0 이면 keepAlive 체킹 안하는건데 그러면 브로커에서 리소스 많이 먹어서 적당한 값을 적용하는게 좋다.
    });

0개의 댓글