React 프로젝트에서 MQTT를 사용하는 방법
15847 단어 reactjavascripttutorialmqtt
이 글은 클라이언트와 MQTT 브로커 사이에 연결, 구독, 메시징 및 구독 취소 등을 구현하기 위해 React 프로젝트에서 MQTT를 사용하는 방법을 주로 소개합니다.
프로젝트 초기화
새로운 과제
참조 링크: https://reactjs.org/docs/getting-started.html
Create React App
를 사용하여 새 React 애플리케이션 만들기 npx create-react-app react-mqtt-test
TypeScript를 사용해야 하는 경우 명령줄 끝에 --template typescript 매개변수를 추가하기만 하면 됩니다.
npx create-react-app react-mqtt-test --template typescript
그런 다음 React 프로젝트에 필요한 TypeScript 유형 라이브러리를 추가하십시오.
npm install --save typescript @types/node @types/react @types/react-dom @types/jest
# or
yarn add typescript @types/node @types/react @types/react-dom @types/jest
TypeScript의 사용은 이 기사의 예제에서 중점적으로 다루지는 않겠지만, 사용을 원하는 경우 생성 예제와 전체 코드 예제를 참조한 후 TypeScript 기능을 추가할 수 있습니다.
<script crossorigin src="https://unpkg.com/react@16/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.production.min.js"></script>
MQTT 클라이언트 라이브러리 설치
React는 JavaScript 라이브러리이므로 MQTT 클라이언트 라이브러리로 MQTT.js을 사용할 수 있습니다.
The following methods 2, 3 are more suitable for referencing projects created by React via CDN links.
npm install mqtt --save
# or
yarn add mqtt
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js"></script>
<script src="/your/path/to/mqtt.min.js"></script>
MQTT의 사용
MQTT 브로커 연결
이 글에서는 EMQX에서 제공하는 the free public MQTT broker을 사용합니다. 이 서비스는 EMQXMQTT IoT cloud platform를 기반으로 만들어집니다. 서버 접속 정보는 다음과 같습니다.
연결하다
const [client, setClient] = useState(null);
const mqttConnect = (host, mqttOption) => {
setConnectStatus('Connecting');
setClient(mqtt.connect(host, mqttOption));
};
useEffect(() => {
if (client) {
console.log(client)
client.on('connect', () => {
setConnectStatus('Connected');
});
client.on('error', (err) => {
console.error('Connection error: ', err);
client.end();
});
client.on('reconnect', () => {
setConnectStatus('Reconnecting');
});
client.on('message', (topic, message) => {
const payload = { topic, message: message.toString() };
setPayload(payload);
});
}
}, [client]);
구독하다
const mqttSub = (subscription) => {
if (client) {
const { topic, qos } = subscription;
client.subscribe(topic, { qos }, (error) => {
if (error) {
console.log('Subscribe to topics error', error)
return
}
setIsSub(true)
});
}
};
구독 취소
const mqttUnSub = (subscription) => {
if (client) {
const { topic } = subscription;
client.unsubscribe(topic, error => {
if (error) {
console.log('Unsubscribe error', error)
return
}
setIsSub(false);
});
}
};
게시
const mqttPublish = (context) => {
if (client) {
const { topic, qos, payload } = context;
client.publish(topic, payload, { qos }, error => {
if (error) {
console.log('Publish error: ', error);
}
});
}
}
연결 끊기
const mqttDisconnect = () => {
if (client) {
client.end(() => {
setConnectStatus('Connect');
});
}
}
테스트
우리는 연결 생성, 주제 구독, 메시지 송수신, 구독 취소 및 연결 해제 기능과 함께 React를 사용하여 다음과 같은 간단한 브라우저 애플리케이션을 작성했습니다.
전체 프로젝트 예제 코드: https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-React .
MQTT 5.0 client tool - MQTT X을 다른 클라이언트로 사용하여 메시지 송수신을 테스트하십시오.
MQTT X를 사용하여 주제에 메시지를 보낼 때 볼 수 있듯이 MQTT X가 브라우저 측에서 정상적으로 메시지를 수신할 수 있음을 알 수 있습니다.
요약
요약하면 React 프로젝트에서 MQTT 연결 생성을 구현하고 클라이언트와 MQTT 브로커 간의 구독, 메시지 전송 및 수신, 구독 취소 및 연결 해제를 시뮬레이션했습니다.
이 기사에서는 React v16.13.1을 사용하므로 Hook Component 기능을 예제 코드로 사용하여 시연하거나 필요한 경우 전체 예제 코드에서 ClassMqtt 구성 요소를 참조하여 프로젝트 빌드에 Class Component 기능을 사용할 수 있습니다. .
https://en.wikipedia.org/wiki/React_(web_framework) ↩
Reference
이 문제에 관하여(React 프로젝트에서 MQTT를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/emqx/how-to-use-mqtt-in-the-react-project-177e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)