[Node.js] mqtt ๋ค๋ฃจ๊ธฐ
MQTT๋ Message Queue Telemetry Transport์ ์ถ์ฝ์ผ๋ก, IoT๋ ๋ฉ์์ง ์ ์ก ์๋ฒ ๋ฑ์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ ํต์ ํ๋กํ ์ฝ ์ค ํ๋๋ค.
ํด๋ผ์ด์ธํธ<->์๋ฒ์ 2์๋ง์ด ์กด์ฌํ๋ HTTP์ ๋ค๋ฅด๊ฒ, ์ด 3๊ฐ์ ์์๋ก ๊ตฌ์ฑ๋๋ค.
์ค์ฌ ์๋ฒ์ ์ญํ ์ ํ๋ **์ค๊ฐ์(broker)**๊ฐ ์๊ณ ,
ํ ํฝ์ ๋ฐํํ๋ **๋ฐํ์ธ(publisher)**์ด ์๋ค.
๊ทธ๋ฆฌ๊ณ **๊ตฌ๋
์(subscriber)**๋ ๋ฐํ๋ ํ ํฝ์ ํตํด ๋ฉ์ธ์ง๋ฅผ ๋ฐ์์จ๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฐํ๊ณผ ๊ตฌ๋
์ ๋ธ๋ก์ปค๊ฐ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
https://wnsgml972.github.io/mqtt/2018/03/05/mqtt/ ํ
๋ฐฑ๋ฌธ์ด ๋ถ์ฌ์ผ๊ฒฌ์ด๋ผ, ์ผ๋จ ์จ๋ณด๋ฉด์ ์ตํ๋ณด์.
๋ธ๋ก์ปค
์ผ๋จ ์ค์ฌ์ด ๋ ๋ธ๋ก์ปค๋ถํฐ ์ ํํ์.
๋ธ๋ก์ปค ์๋ฒ๋ ์ฐ๋ฆฌ๊ฐ ์ง์ ๊ตฌํํ๊ธด ํ๋ค ์ ์๊ณ , ์ ๊ณต๋๋ ์น๊ตฌ๋ค์ ์ฐ๋ ๊ฒ ํธ๋ฆฌํ๋ค.
mosquitto, HiveMQ, Rabbit MQ, IBM MQ, Vertx ๋ฑ์ด ์๋๋ฐ, ์ด ์ค์์๋ ๋ชจ์คํคํ ๊ฐ ์ธ๊ธฐ๊ฐ ๋ง์ ๊ฒ ๊ฐ๋ค.
๋ชจ์คํคํ ๋ฅผ ์ด๋ค๋ฉด 'mqtt://test.mosquitto.org'๋ฅผ ํตํด ๋ธ๋ก์ปค์ ์ ์ํ ์ ์๋ค.
๋ฐํ๊ณผ ๊ตฌ๋
๊ทธ๋ผ ์ด์ ๋ธ๋ก์ปค๋ฅผ ํตํด ๊ตฌ๋ ๊ณผ ๋ฐํ์ ํ๊ธฐ ์ํ ํด๋ผ์ด์ธํธ ๋ชจ๋์ ์ค์นํ์. ์ด๋ฆ์ mqtt๋ค.

์ผ๋จ ํผ๋ธ๋ฆฌ์
๋ถํฐ ๋ฐ๋ก ๋ง๋ค์๋ค.
๊ฐ๋จํ๊ฒ ๋ชจ์คํคํ ๋ธ๋ก์ปค์๊ฒ ์ฐ๊ฒฐํ ํ์, 2์ด๋ง๋ค test ํ ํฝ์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ๊ณ์ ์ ์กํ๋ค.

๊ทธ๋ฆฌ๊ณ ๊ตฌ๋ ์๋ค. test ํ ํฝ์ ๊ตฌ๋ ํ ํ์, message ์ด๋ฒคํธ ํธ๋ค๋ง์ผ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ค.

์ 2๊ฐ์ ํ๋ก๊ทธ๋จ์ ๊ฐ๊ฐ ๋๋ฆฌ๋ฉด, ๊ตฌ๋ ์์๊ฒ๋ ์๋์ ๊ฐ์ด ๊ณ์ ๋ฉ์ธ์ง๊ฐ ๋ค์ด์ค๊ณ ๋ก๊น ๋ ๊ฒ์ด๋ค.

QoS ์์ค
mqtt๋ 3๊ฐ์ง์ QoS ์์ค์ ์ ๊ณตํ๋ค.
๋ญ ๊ทธ๋ ๊ฒ ๊ฑฐ์ฐฝํ ๊ฒ์ ์๋๊ณ , ์ ์ก์ ์คํจํ์ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ๊ฒ์ธ์ง๋ฅผ ์์ค์ ๋ฐ๋ผ ๋๋๋ ๊ฒ์ด๋ค.
0๋ ๋ฒจ์ ๊ทธ๋ฅ ๋ฌด์ํ๊ฒ ํ๋ฒ ์๊ณ ๋ง๋ค. ์ก์์ ์ ์คํจํด๋ ๊ทธ๋ฅ ๋ฌด์๋๋ค. UDP์ฒ๋ผ...
1๋ ๋ฒจ์ ์ ์ด๋ ํ๋ฒ ์์ ๋๋ค. ์์ ์ ์ฑ๊ณตํ ๋๊น์ง ๋ณด๋ด๋ ๊ฒ์ด๋ค.
2๋ ๋ฒจ์ ๊ฑฐ๊ธฐ์ ๋ํด์ ์ค๋ณต ์ฒ๋ฆฌ๋ ํด์ค๋ค. ๋ฌด์กฐ๊ฑด ์ ํํ ํ๋ฒ๋ง ์์ ๋๋๋ก ํ๋ ๊ฒ์ด๋ค.
๋ณดํต์ ๋ฐ๋ก ์ค์ ํ์ง ์๋๋ค๋ฉด 0๋ ๋ฒจ๋ก ๋์ํ๋ค.
์ง์ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด ์ถ๊ฐ ์ต์
์ ์ฃผ๋ฉด ๋๋ค.

์ฐธ์กฐ
https://yonghyunlee.gitlab.io/node/node-mqtt/
https://wnsgml972.github.io/mqtt/2018/03/05/mqtt/
https://medium.com/@alifabdullah/setting-up-private-mqtt-broker-using-mosca-in-node-js-c61a3c74f952
https://www.npmjs.com/package/mqtt#install