Cài đặt một MQTT Broker đơn giản sử dụng Mosca và MQTTnet

MQTT là gì?

MQTT (Message Queuing Telemetry Transport) là một Publish/Subscribe messaging protocol rất đơn giản, nhẹ sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không ổn định.



Có nhiều cách để khởi tạo một MQTT Server như
1. Dùng các hệ thống cloud có sẵn
https://www.cloudmqtt.com
https://www.hivemq.com
2. Dùng các công cụ có sẵn hỗ trợ giao diện hoặc dòng lệnh (Mosquitto)
3. Dùng các thư viện hỗ trợ ở từng loại ngôn ngữ bạn sử dụng
C# : MQTTnet
JavaScript : Mosca

Ở đây tôi sử dụng cách thứ 3 và dùng thư viện Mosca trên NodeJS

Cài đặt MQTT Server sử dụng Mosca

Yêu cầu
Máy tính có cài đặt NodeJS
Docker Desktop (Trong trường hợp muốn deploy container)

Các bạn có thể tải về tham khảo code mẫu ở đây.

Các bước thực hiện

Khởi tạo một project NodeJS
npm init

Cài đặt các thư viện
Mosca là thư viện để tạo MQTT server
https://github.com/mcollina/mosca
https://www.npmjs.com/package/mosca

mqtt là thư viện để tạo các tương tác từ client lên MQTT server
https://www.npmjs.com/package/mqtt

npm install mosca
npm install mqtt

Trong trường hợp có lỗi liên quan đến Visual Studio Compiler có thể sử dụng câu lệnh sau để fix
npm install --global --production windows-build-tools
npm config set msvs_version 2017

Tạo file mqtt-server.js để cấu hình MQTT server
Tạo file subscriber.js để tiến hành việc tương tác mà client đóng vai trò là subscriber nhận message từ MQTT server
Tạo file publisher.js.js để tiến hành việc tương tác mà client đóng vai trò là publisher gửi message tới MQTT server
Mở 3 terminal tương ứng với 3 phần (server, subscriber, publisher) từ vị trí hiện tại của project

Tiến hành chạy lần lượt các phần
node mqtt-server.js
node subscriber.js
node publisher.js

Nếu bạn tải code mẫu của tôi thì sẽ chạy bằng dòng lệnh sau
npm run server
npm run subscriber
npm run subscriber

Kiểm tra kết quả nhận được



Tạo kết nối từ client là các ứng dụng .NET


Các bạn có thể tải về tham khảo code mẫu ở đây.

Yêu cầu
Visual Studio or Visual Studio Code
.NET Core SDK

Các bước thực hiện
Tạo mới một project ở dạng Console App
dotnet new -o MQTTClientTest

Cài đặt các thư viện cần thiết
Để kết nối tới MQTT server ở đây tôi sử dụng thư viện MQTTnet
https://github.com/chkr1011/MQTTnet

cd MQTTClientTest
dotnet add package MQTTnet

Tham khảo việc gửi nhận dữ liệu trong file Program.cs dưới đây
Chạy và kiểm tra kết quả
Tiến hành chạy MQTT server tạo ở bên trên
node mqtt-server.js hoặc npm start

dotnet run

Kết quả



Trên đây là ví dụ hết sức đơn giản cho việc tự xây dựng một MQTT server broker với phần server dùng NodeJS và client dùng .NET.
Với các kiến thức chuyên sâu cụ thể, các bạn vui lòng tham khảo ở các bài viết khác hoặc tìm kiếm thêm thông tin trên internet.

Tham khảo thêm
https://medium.com/@alifabdullah/setting-up-private-mqtt-broker-using-mosca-in-node-js-c61a3c74f952
https://github.com/chkr1011/MQTTnet

Để có thể tương tác một cách dễ dàng với MQTT Server, bạn có thể sử dụng các công cụ để kiểm tra kết nối tới MQTT dùng giao diện
MQTT.fx
http://www.jensd.de/apps/mqttfx/
Mosquitto
http://mosquitto.org/download/



Tiếp tục cập nhật ...