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ầuMá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 ...