MQTT와 웹 소켓의 주요 차이점은 무엇입니까?
홈 자동화에 IoT를 사용하는 경우-Rest API 기반 및 브라우저 기반 액세스 가능성이 필요할 때 사용해야하는 여러 장치에 대한 액세스를 제어 및 모니터링합니다.
Raspberry Pi 2 B +에서 Java (Pi4J 라이브러리)를 사용하고 있습니다.
명암, 습도, PID 등과 같은 여러 센서를 설정했습니다.
필요한 경우 데이터를 보낼 수있는 클라우드 서버도 있습니다.
MQTT와 웹 소켓의 주요 차이점은 무엇입니까?
홈 자동화에 IoT를 사용하는 경우-Rest API 기반 및 브라우저 기반 액세스 가능성이 필요할 때 사용해야하는 여러 장치에 대한 액세스를 제어 및 모니터링합니다.
Raspberry Pi 2 B +에서 Java (Pi4J 라이브러리)를 사용하고 있습니다.
명암, 습도, PID 등과 같은 여러 센서를 설정했습니다.
필요한 경우 데이터를 보낼 수있는 클라우드 서버도 있습니다.
답변:
실제로 이러한 프로토콜을 전혀 비교할 수 없기 때문에 여기서의 질문 설정은 약간 오해의 소지가 있습니다. 그것들은 TCP 및 IP와 같으며 서로 겹쳐 있습니다. [1]
Websockets는 동일한 수준에있는 '경쟁 업체'RESTful http가 제공하지 않는 기능을 제공하기위한 저수준 프로토콜입니다. 모든 요청에서 항상 열고 닫을 필요가없는 항상 열려있는 채널입니다. [2]
MQTT는 데이터를 공개하거나 구독하는 간단한 방법을 제공합니다. 이러한 구독이 일종의 채널이지만 다른 유형의 채널이라는 혼동이있을 수 있습니다. MQTT에서 지속적으로 열린 연결을하려면 웹 소켓과 MQTT가 동시에 필요합니다.
IoT는 물론 모든 디자인에서 스트림이 필요한지 여부를 선택해야하고 (WebSockets vs RESTful) MQTT에 대해 앱에서 구독 및 게시 메커니즘을 원하는지 여부를 고려해야합니다.
어떤 상황에서는 일반적인 상황이 발생하면 WebSockets를 통한 MQTT를 고려할 수 있습니다. [삼]
질문에 대한 답변 :
Rasperry Pi와 여러 센서가 설치되어 있다고 가정합니다. 자체 컨트롤러로 센서가 Rasperry와 거리가 멀면 MQTT를 사용하여 데이터를 수집 할 수 있습니다. 클라우드에 데이터를 저장하려면 HTTP로 데이터를 보내십시오. 클라우드에서 휴식을 통해 데이터를 제공하십시오. [4]
웹 소켓의 경우 필요하지 않지만 유용하다고 생각되면 사용하십시오.
출처 :
[2] https://www.pubnub.com/blog/2015-01-05-websockets-vs-rest-api-understanding-the-difference/
[3] /programming/30624897/direct-mqtt-vs-mqtt-over-websocket
[4] http://www.theinternetofthings.eu/antonio-grasso-mqtt-vs-http-what-best-protocol-iot
두 서버 모두 클라이언트가 폴링하지 않고 (HTTP에서와 같이) 서버가 데이터를 클라이언트에 즉시 전달할 수 있도록 전이중 통신을 할 수 있다는 점에서 비슷합니다.
그러나 웹 소켓은 클라이언트와 서버 간의 간단한 지점 간 연결을 위해 설계되었습니다. MQTT는 기본 메시지 전송 위에 추가 추상화를 계층화하여 여러 이해 당사자가 관심있는 메시지를 구독 할 수 있습니다. 따라서 많은 클라이언트가 명목 대기열을 공유 할 수 있도록 '메시지 주제'로 메시지를 라우팅 할 수 있습니다. 여기서 서버는 모든 클라이언트의 모든 메시지를 수신하도록 선택할 수 있지만 주제별로 필터링 할 수도 있습니다.
MQTT에는 가입자가 즉시 메시지를 수신 할 수 있도록 보존 된 메시지와 클라이언트가 비정상적으로 연결을 끊을 경우 자동으로 보낼 수있는 LWT (Last Will and Testament)와 같은 다양한 유용한 기능이 있습니다. 요약하면, MQTT는 단순한 웹 소켓이 제공하지 않는 기능과 추상화를 제공하는 '더 높은 스택'입니다.