[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