Máy chủ mqtt nodejs
MQTT là gì?MQTT (Message Queuing Telemetry Transport) là một giao thức Publish/Subscribe tin nhắn rất đơn giản, nhẹ nhàng 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 Show
Có nhiều cách để khởi tạo một Máy chủ MQTT như 1. Sử dụng các hệ thống đám mây có sẵn https. //www. đám mâymqtt. com https. //www. hivemq. com 2. Sử dụng các công cụ có sẵn giao diện hỗ trợ hoặc dòng lệnh (Mosquitto) 3. Sử dụng các thư viện hỗ trợ trong 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à sử dụng thư viện Mosca trên NodeJS Cài đặt Máy chủ MQTT sử dụng MoscaYêu cầuMáy tính có cài đặt NodeJS Docker Desktop (Trong trường hợp muốn triển khai vùng chứa) . Các bước thực hiện Khởi tạo dự án NodeJS npm init Cài đặt các . //github. com/mcollina/mosca 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ừ máy khách lên máy chủ MQTT 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ó . js to config MQTT server 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 Create file subscriber. js để tiến hành công việc tương tác mà khách hàng đóng vai trò là người đăng ký nhận tin nhắn từ máy chủ MQTT Tạo nhà xuất bản tệp. js. js để tiến hành công việc tương tác mà khách hàng đóng vai trò chơi là nhà xuất bản gửi thông báo tới máy chủ MQTT Mở 3 thiết bị đầu cuối tương ứng với 3 phần (máy chủ, người đăng ký, nhà xuất bản) từ vị trí hiện tại của dự án . js Tiến hành chạy lần lượt các phần node mqtt-server.js nút người đăng ký. js nhà xuất bản nút. js Nếu bạn tải mẫu mã của tôi thì sẽ chạy bằng dòng lệnh sau npm run server npm run subscribernpm runnpm runnpm run npm run subscriber Kiểm tra kết quả nhận được Create connection from client is a application. MẠNG LƯỚICác bạn có thể tải về mẫu mã tham khảo tại đây. Yêu cầu Visual Studio hoặc Visual Studio Code . NET Core SDK Các bước thực hiện Tạo dự án mới ở dạng Ứng dụng bảng điều khiển 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 dữ liệu gửi nhận dữ liệu trong tệp Program. cs dưới đây Chuyển và kiểm tra kết quả Tiến hành chạy máy chủ MQTT được tạo ở bên trên node mqtt-server. js hoặc npm start chạy dotnet Kết quả Ở đây là một ví dụ hết sức đơn giản để xây dựng một nhà môi giới máy chủ MQTT với phần máy chủ sử dụng NodeJS và máy khách sử dụng. MẠNG LƯỚI. Với các kiến thức chuyên sâu cụ thể, các bạn vui lòng tham khảo tại 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. //vừa phải. 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 Máy chủ MQTT, bạn có thể sử dụng các công cụ để kiểm tra kết nối tới MQTT bằng giao diện MQTT.fx http. //www. jensd. de/apps/mqttfx/ Muỗi http. // muỗi. org/download/ Tiếp tục cập nhật. Như chúng ta có thể đã biết, Node. js là một công cụ và thời gian chạy JavaScript không đồng bộ và hướng sự kiện, cung cấp năng lượng cho rất nhiều ứng dụng nối mạng, phía máy chủ tồn tại ngày nay. Trong bài đăng này, chúng ta sẽ khám phá sự tương tác của Node. js với MQTT, giao thức xuất bản/đăng ký (pub/sub) và tiêu chuẩn cho thế giới Internet vạn vật (IoT) Trong bài đăng này, chúng tôi dự định chỉ đề cập đến các chức năng và API MQTT công khai, quan trọng, đồng thời khám phá một tập lệnh đơn giản của nhà xuất bản và người đăng ký trong Node. js MQTT là gì?Năm 1999, Andy Standford-Clark của IBM và Arlen Nipper đã thiết kế phiên bản đầu tiên của giao thức MQTT. Vào thời điểm đó, mục tiêu là xây dựng một giao thức có thể hỗ trợ băng thông thấp, nhẹ và tiêu thụ tài nguyên tối thiểu vì các thiết bị được kết nối qua liên kết vệ tinh rất đắt. Có hai phiên bản của đặc điểm kỹ thuật. MQTT 3. 1. 1 và MQTT 5. 0. 0. Hầu hết các nhà môi giới MQTT thương mại hiện hỗ trợ MQTT 5, nhưng nhiều dịch vụ đám mây do IoT quản lý chỉ hỗ trợ MQTT 3. 1. 1, từng là phiên bản phổ biến và được hỗ trợ rộng rãi nhất Rất khuyến khích triển khai IoT mới sử dụng phiên bản 5. 0. 0 (được phê duyệt vào năm 2018) vì các tính năng mới của nó tập trung nhiều hơn vào các hệ thống mạnh mẽ và khả năng mở rộng trên nền tảng đám mây. Bạn có thể đọc thêm những điểm nổi bật và sự khác biệt chi tiết giữa cả hai phiên bản trên trang GitHub của MQTT sử dụng ngày hôm nayMQTT là một giao thức máy khách-máy chủ nhẹ, triển khai mô hình truyền tải thông điệp pub/sub và đã được sử dụng để kết nối các thiết bị/đồng nghiệp từ xa trong các ứng dụng IoT quan trọng, giao tiếp giữa Máy với Máy (M2M) và nhiều lĩnh vực khác yêu cầu giao tiếp thông suốt. . Đây là kết quả của thiết kế đơn giản, dễ sử dụng và đặc tả mở MQTT đã được quản lý bởi ban chỉ đạo kỹ thuật OASIS từ năm 2014. Ủy ban giám sát việc duy trì, cập nhật và duy trì tiêu chuẩn, bao gồm tổ chức các tài liệu trường hợp sử dụng và bảo vệ quyền sở hữu trí tuệ của nó Nó dựa trên TCP/IP, một ngăn xếp mạng cấp thấp đáng tin cậy và định hướng kết nối với lớp vận chuyển độc lập với cấu trúc tải trọng dữ liệu, cho phép mô hình giao tiếp mạng máy chủ đến máy chủ hai chiều được sắp xếp và chính xác Mẫu pub/sub cũng cho phép các thông báo được phân phối từ một ứng dụng đến nhiều ứng dụng khác nhau cùng một lúc. Tuy nhiên, nhà xuất bản và người đăng ký trong trường hợp này thường là các ứng dụng độc lập (tách rời) và chỉ được kết nối thông qua nhà môi giới hoặc máy chủ. Ví dụ: nền tảng nhắn tin pub/sub phổ biến RabbitMQ, sử dụng MQTT bên trong Các trường hợp sử dụng MQTTMQTT đã tìm thấy rất nhiều trường hợp sử dụng mà chúng ta sẽ khám phá bên dưới
Bạn có thể tìm thêm chi tiết về những điều này trên trang trường hợp sử dụng của tài liệu MQTT. Một trong những dự án tự động hóa gia đình nguồn mở phổ biến nhất, trợ lý gia đình, dựa trên giao thức MQTT Kiến trúc quán rượu/phụ của MQTTGiao thức MQTT bao gồm nhà môi giới, hoạt động giống như một máy chủ trung tâm chuyển các tin nhắn từ ứng dụng khách của nhà xuất bản sang ứng dụng khách đăng ký và một hoặc nhiều ứng dụng khách, có thể là người đăng ký hoặc nhà xuất bản tin nhắn hoặc dữ liệu Người môi giới có thể nói giống như người đưa thư, người đảm bảo thư được gửi đến người nhận tương ứng của họ. Chúng phải được thiết kế để có khả năng mở rộng và bảo mật cao, vì chúng là điểm tranh luận trung tâm cho các máy khách MQTT Ở cấp độ cao, nhà môi giới hoạt động như một cổng định tuyến các tin nhắn đã xuất bản từ các ứng dụng của nhà xuất bản đến những người đăng ký thích hợp. Thông thường, các nhà môi giới có thể được triển khai trên nhiều cụm hoặc phiên bản và được đặt sau bộ cân bằng tải để có khả năng chịu lỗi tốt hơn. Các khách hàng MQTT xuất bản tin nhắn cho một nhà môi giới trung tâm (thường là một chủ đề) và các khách hàng khác có thể đăng ký cùng một chủ đề trên nhà môi giới để nhận những tin nhắn này Mô hình kiến trúc quán rượu/phụ MQTTDo đó, một khách hàng xuất bản một thông báo cho (các) chủ đề, trong khi các khách hàng khác đăng ký chủ đề, để cho biết họ quan tâm đến việc nhận thông báo về. Người môi giới có một loại cơ chế lọc mà nó sử dụng để kiểm soát người đăng ký nào sẽ gửi tin nhắn đến. Điều này có nghĩa là nhà môi giới kiểm tra hoặc lọc người đăng ký (hoặc danh sách người đăng ký) về một chủ đề hoặc nhóm chủ đề cụ thể và gửi tin nhắn cho họ Tóm lại, nhà môi giới đọc, xác nhận và xử lý tin nhắn (đòi hỏi phải xác định người đăng ký (các) chủ đề và gửi tất cả tin nhắn phù hợp cho họ) được gửi từ ứng dụng khách hoặc ứng dụng của nhà xuất bản Ghi chú. MQTT dựa trên cách lọc tin nhắn, theo đó nhà môi giới gửi tin nhắn cho những người đăng ký quan tâm đến nội dung tin nhắn. Các tin nhắn thường chứa một chủ đề, được người môi giới sử dụng để tìm ra cách định tuyến các tin nhắn cụ thể đến các khách hàng đã đăng ký, phù hợp Lọc dựa trên chủ đề đòi hỏi cách khách hàng (nhà xuất bản và người đăng ký) tương tác với nhà môi giới thông qua các chủ đề, đây là một phần của mọi tải trọng tin nhắn Hơn 200 nghìn nhà phát triển sử dụng LogRocket để tạo ra trải nghiệm kỹ thuật số tốt hơnTìm hiểu thêm →Cho đến nay, chúng tôi đã sử dụng một số thuật ngữ kỹ thuật nghe có vẻ mới đối với một số độc giả. Trong phần tiếp theo, chúng ta sẽ khám phá một số thuật ngữ này và ý nghĩa của chúng Giải thích một số khái niệm kỹ thuật MQTT
Làm việc với MQTT ở cấp ứng dụngBây giờ, chúng ta hãy xem cách MQTT hoạt động ở cấp ứng dụng. Chúng tôi sẽ sử dụng nút. thư viện máy khách js cho MQTT, mqtt. js MQTT. js là một thư viện mã nguồn mở JavaScript dành cho giao thức MQTT, có thể áp dụng trong cả Node. js và trình duyệt. Thông thường, thư viện có thể được sử dụng để xuất bản tin nhắn và đăng ký chủ đề trên nhà môi giới MQTT Những điểm cần lưu ý về MQTT. thư viện js
Lưu ý rằng cũng có sẵn các thư viện máy khách cho nhiều ngôn ngữ lập trình và cho các hệ điều hành chính (Linux, Windows và macOS) Kết nối/Ngắt kết nối với nhà môi giới/máy chủ MQTTCác kết nối máy khách luôn được xử lý bởi nhà môi giới/máy chủ, vì người đăng ký và nhà xuất bản MQTT là các ứng dụng riêng biệt, tách rời. Như chúng tôi đã đề cập trước đó, cả nhà xuất bản và người đăng ký đều là khách hàng MQTT và do đó cần được kết nối với cùng một nhà môi giới/máy chủ Các máy khách không bao giờ kết nối trực tiếp với nhau; . Các triển khai hoặc biến thể MQTT khác cũng kết nối qua UDP (MQTT<-SN). Người môi giới chịu trách nhiệm về.
Các nhà môi giới nên dễ dàng mở rộng quy mô và tích hợp vào các hệ thống phụ trợ khác nhau. Chúng có thể khá chịu lỗi, vì chúng là điểm quan trọng nhất trong giao tiếp giữa nhà xuất bản/người đăng ký Để kết nối với nhà môi giới lần đầu tiên, khách hàng gửi tin nhắn npm install mqtt -g0. Sau khi bắt đầu, nhà môi giới trả về một tin nhắn npm install mqtt -g1 và mã trạng thái. Một điều quan trọng khác cần lưu ý là nhà môi giới luôn giữ kết nối hoạt động hoặc mở, trừ khi khách hàng gửi sự kiện ngắt kết nối hoặc kết nối internet của họ bị ngắt Có một số nhà môi giới MQTT phổ biến, được lưu trữ miễn phí hiện nay. Mosquitto của Eclipse là một trong số đó và nó chạy trên tất cả các hệ điều hành chính Ngoài ra còn có các nhà môi giới được lưu trữ hoặc dựa trên đám mây thương mại khác, như HIVEMQ. Chúng thường hữu ích nếu chúng tôi không có ý định cài đặt và quản lý các nhà môi giới của riêng mình. Bạn có thể tìm một nhà môi giới MQTT tốt để thử nghiệm nhanh trên trang web MQTT Cài đặt thư viện khách hàng của chúng tôiĐể cài đặt MQTT. js, hãy chạy lệnh sau npm install mqtt --save Lưu ý rằng MQTT. js gói một lệnh để tương tác với một nhà môi giới. Để giao diện giao thức MQTT có sẵn trên đường dẫn hệ thống của bạn, chúng tôi có thể cài đặt nó trên toàn cầu npm install mqtt -g Khi kết thúc quá trình cài đặt, tệp npm install mqtt -g2 của chúng ta sẽ trông như thế này //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } } Để kiểm tra chương trình, bạn có thể chạy nhà xuất bản trên một cửa sổ đầu cuối và chạy thuê bao trên một cửa sổ đầu cuối khác Các bài viết hay khác từ LogRocket
Tạo ứng dụng khách xuất bản MQTTBây giờ, hãy để chúng tôi tạo một ứng dụng khách MQTT xuất bản tin nhắn. Để làm như vậy, chúng ta có thể nhập MQTT. js và sử dụng phương thức kết nối const mqtt = require('mqtt') require('dotenv').config() const clientId = 'mqttjs_' + Math.random().toString(8).substr(2, 4) const client = mqtt.connect(process.env.BROKER_URL, {clientId: clientId}); Lưu ý rằng chúng tôi đã thêm npm install mqtt -g3 vào tệp môi trường của mình. Như chúng ta có thể thấy, phương thức npm install mqtt -g4 chấp nhận một URL nhất định (URL máy chủ môi giới) và một đối tượng tùy chọn máy chủ tùy chọn. Các giao thức được chấp nhận có thể là npm install mqtt -g5, npm install mqtt -g6, npm install mqtt -g7, npm install mqtt -g8, npm install mqtt -g9, v.v. Phương thức kết nối trả về một máy khách được kết nối Để thử kết nối lại khi kết nối máy khách MQTT bị hỏng, chúng tôi có thể đặt tùy chọn //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }0 (khoảng thời gian giữa hai lần kết nối lại) lớn hơn 0. Giá trị mặc định là //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }1 giây, có nghĩa là sau khi ngắt kết nối, nó sẽ cố gắng mở lại kết nối gần như ngay lập tức npm install mqtt -g6 Nếu chúng tôi đặt giá trị của tùy chọn máy khách //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }0 thành //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }3, kết nối lại sẽ bị vô hiệu hóa và chấm dứt khi kết nối bị ngắt Khi tùy chọn đăng ký lại được đặt thành giá trị mặc định ( //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }4), khách hàng có thể tự động kết nối lại và đăng ký lại chủ đề đã đăng ký trước đó khi kết nối bị hỏng. Đặc biệt nhất đối với các nhà môi giới tự lưu trữ, chúng tôi có thể muốn xác thực bằng tên người dùng và mật khẩu. Có thể tìm thấy thêm chi tiết về đối tượng tùy chọn máy chủ trên MQTT GitHub Xuất bản dữ liệu và thông điệpSau khi được kết nối với nhà môi giới, ứng dụng khách MQTT có thể gửi tin nhắn gần như ngay lập tức. Sự kiện xuất bản có tải trọng tin nhắn và tên chủ đề mà nhà môi giới có thể sử dụng để xác định các bên đã đăng ký. Ngoài ra, có một tùy chọn gọi lại để kiểm tra lỗi hoặc khi gói tin đã được truyền đi Loại thông báo đã xuất bản hoặc gói được gửi có các thuộc tính sau
Lệnh như hình bên dưới npm install mqtt --save7 Khi khách hàng gửi tin nhắn đến nhà môi giới, nhà môi giới sẽ xử lý tin nhắn dựa trên một số tiêu chí do nhà phát triển đặt ra. Điều này nên bao gồm mức QoS, xác định loại tin nhắn có đảm bảo gì để tiếp cận người nhận dự định và đảm bảo đảm bảo gửi tin nhắn Giai đoạn xử lý thường đòi hỏi phải đọc, xác nhận và xác định khách hàng đã đăng ký chủ đề. Bước cuối cùng là gửi tin nhắn cho khách hàng đã đăng ký Đây là mã hoàn chỉnh cho tệp const mqtt = require('mqtt') require('dotenv').config() const clientId = 'mqttjs_' + Math.random().toString(8).substr(2, 4) const client = mqtt.connect(process.env.BROKER_URL, {clientId: clientId});2, bao gồm một số phương thức/API công khai npm install mqtt --save9 Tiếp theo, chúng ta có thể tiếp tục và triển khai ứng dụng khách đăng ký, ứng dụng này sẽ tiêu thụ các thông báo về các chủ đề đăng ký tin nhắnĐể nhận tin nhắn về các chủ đề chúng tôi quan tâm, khách hàng gọi sự kiện const mqtt = require('mqtt') require('dotenv').config() const clientId = 'mqttjs_' + Math.random().toString(8).substr(2, 4) const client = mqtt.connect(process.env.BROKER_URL, {clientId: clientId});3 cho nhà môi giới. Tin nhắn đã đăng ký thường chứa tải trọng gói tin nhắn, như được hiển thị bên dưới npm install mqtt -g1 Thay vì có tên chủ đề dưới dạng các chuỗi được phân tách thông thường, chúng tôi cũng có thể lưu trữ các chủ đề dưới dạng ký tự đại diện để người đăng ký có thể dễ dàng đăng ký các mẫu chủ đề, thay vì một chủ đề tại một thời điểm. Nhà xuất bản và khách hàng đăng ký cần biết trước tên chủ đề cho các mẫu để thực hiện việc này Lưu ý rằng khách hàng đăng ký cần biết trước cấu trúc của dữ liệu họ sẽ nhận được để họ có thể xử lý dữ liệu một cách thích hợp. Nhà xuất bản gửi tin nhắn đến một chủ đề cụ thể trong trình môi giới ở một định dạng cụ thể và người đăng ký dự định của tin nhắn đó cần biết dữ liệu đó được cấu trúc như thế nào để họ có thể xử lý chính xác mà không làm hỏng ứng dụng Mã hoàn chỉnh cho ứng dụng khách đăng ký được hiển thị trong tệp bên dưới npm install mqtt -g2 Các tính năng MQTT bổ sungMột số tính năng của MQTT được mô tả bên dưới tin nhắn được giữ lạiTin nhắn được giữ lại là tin nhắn MQTT có tùy chọn/cờ được giữ lại được đặt thành //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }4. Theo mặc định, khi người môi giới/máy chủ nhận được tin nhắn cho một chủ đề không có người đăng ký, tin nhắn sẽ bị loại bỏ. Tuy nhiên, MQTT có cơ chế giữ lại các tin nhắn này bằng cách đặt cờ, cho phép nhà xuất bản giữ lại tin nhắn. Lưu ý rằng nhà môi giới chỉ lưu trữ một tin nhắn được giữ lại cho mỗi chủ đề Hỗ trợ xác thực và bảo mật dữ liệu rộng rãiMQTT hỗ trợ các phương thức xác thực và cơ chế bảo mật dữ liệu khác nhau, bao gồm TLS và OAuth, thường được định cấu hình trên trình môi giới MQTT. Do đó, điều này có nghĩa là các máy khách triển khai các máy chủ này cần tuân thủ các cơ chế như đã xác định Theo mặc định, MQTT hỗ trợ cơ chế kết nối lại để thiết lập các kết nối liên tục ở những khu vực có kết nối thấp. Điều này rất quan trọng để lưu trữ tin nhắn, nhưng không giống như các hệ thống xếp hàng truyền thống, các nhà môi giới không chỉ lưu trữ tin nhắn. MQTT lưu trữ tin nhắn bằng cách đảm bảo rằng các phiên máy khách liên tục và mức QoS lớn hơn //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }3 Chất lượng dịch vụ (QoS)Để xử lý các thách thức điển hình trong hệ thống quán rượu/phụ, MQTT đã triển khai ba cấp độ Chất lượng dịch vụ (QoS). Ba cấp độ này bao gồm 0, 1 và 2. và chúng xác định hình thức bảo đảm nào mà một tin nhắn có thể đến được với người nhận dự định (khách hàng hoặc người môi giới) Để hỗ trợ gửi tin nhắn đáng tin cậy, giao thức hỗ trợ ba loại tin nhắn chất lượng dịch vụ riêng biệt
Để lưu trữ tin nhắn, khách hàng phải đăng ký một chủ đề có Chất lượng dịch vụ lớn hơn //package.json { "name": "mqtt-demo", "version": "1.0.0", "description": "A node.js and MQTT demo", "main": "index.js", "scripts": { "start-publisher": "nodemon publisher.js", "start-consumer": "nodemon subscriber.js" }, "keywords": [ "Node.js", "MQTT", "Pub/Sub", "IoT", "message", "transport" ], "author": "Alexander Nnakwue", "license": "MIT", "dependencies": { "dotenv": "^10.0.0", "mqtt": "^4.3.2" }, "devDependencies": { "nodemon": "^2.0.15" } }3 Dữ liệu bất khả triMQTT không liên quan đến dữ liệu và trường hợp sử dụng của máy khách xác định cách cấu trúc tải trọng. Do đó, có thể gửi bất kỳ loại tin nhắn nào, bao gồm hình ảnh, văn bản được mã hóa, dữ liệu được mã hóa, v.v. Ghi chú. Cổng MQTT không được mã hóa mặc định là const mqtt = require('mqtt') require('dotenv').config() const clientId = 'mqttjs_' + Math.random().toString(8).substr(2, 4) const client = mqtt.connect(process.env.BROKER_URL, {clientId: clientId});7. Cổng TCP/IP được mã hóa const mqtt = require('mqtt') require('dotenv').config() const clientId = 'mqttjs_' + Math.random().toString(8).substr(2, 4) const client = mqtt.connect(process.env.BROKER_URL, {clientId: clientId});8 cũng được hỗ trợ để sử dụng MQTT qua SSL Sự kết luậnMQTT cung cấp mô hình nhắn tin pub/sub hai chiều phù hợp với các khu vực hạn chế băng thông mạng. Các dịch vụ độc lập với các ứng dụng chính của chúng tôi vì chúng được tách rời và các nhà môi giới hoặc máy chủ có thể được thu nhỏ riêng lẻ Đây là danh sách các dự án nguồn mở tận dụng giao thức MQTT trên GitHub. Chi tiết về ứng dụng demo của chúng tôi có thể được tìm thấy trên GitHub và bạn cũng có thể tìm thấy chi tiết về tiêu chuẩn MQTT trên GitHub Chỉ dành cho 200 Theo dõi các yêu cầu mạng chậm và không thành công trong sản xuấtTriển khai trang web hoặc ứng dụng web dựa trên Node là phần dễ dàng. Đảm bảo phiên bản Node của bạn tiếp tục cung cấp tài nguyên cho ứng dụng của bạn là lúc mọi thứ trở nên khó khăn hơn. Nếu bạn quan tâm đến việc đảm bảo các yêu cầu đối với dịch vụ phụ trợ hoặc bên thứ ba thành công, hãy thử LogRocket. https. // tên lửa. com/đăng ký/LogRocket giống như một DVR dành cho ứng dụng web và thiết bị di động, ghi lại mọi thứ diễn ra trong khi người dùng tương tác với ứng dụng của bạn theo đúng nghĩa đen. Thay vì đoán xem tại sao lại xảy ra sự cố, bạn có thể tổng hợp và báo cáo về các yêu cầu mạng có vấn đề để nhanh chóng hiểu nguyên nhân gốc rễ |