- Thời gian vận hành của thiết bị - tu vi 12 con giap

/imgposts/vddxpr7v.jpg
  • Trạng thái hiện tại của thiết bị từ xa: Ví dụ, thiết bị đang hoạt động hay đã tạm dừng.
  • Thời gian vận hành của thiết bị.
  • Giá trị cảm biến thời gian thực từ thiết bị.

Nếu sử dụng phương pháp yêu cầu định kỳ (polling) từ ứng dụng mini program của WeChat, ví dụ mỗi 10 giây gửi một lần yêu cầu dữ liệu, trải nghiệm sẽ không được tốt vì sự chậm trễ có thể nhìn thấy bằng mắt thường. Đặc biệt trong trường hợp trạng thái vận hành của thiết bị, nếu người dùng nhấn nút "bắt đầu" mà không thể ngay lập tức thấy trạng thái "đã khởi động", điều này sẽ trông rất thiếu chuyên nghiệp. Thay vào đó, giao thức MQTT có khả năng đẩy thông báo thời gian thực.

Điền tên miền hợp lệ trong phần cấu hình domain của socket. Ví dụ:

wss://www.sunzhongwei.com

Lưu ý rằng đây là một "hố đen" phổ biến khi cấu hình: mặc dù bạn điền wss trong phần cấu hình, nhưng khi sử dụng thì lại phải dùng wxs. Đây là một điểm gây khó chịu trong quá trình phát triển.

Tham khảo cách cấu hình chứng chỉ WSS cho dịch vụ EMQX MQTT. Do WSS sử dụng cổng mặc định là 443, giống như HTTPS, bạn có thể đặt quy tắc chuyển tiếp trực tiếp trên Nginx.

Trước tiên, tải xuống xèng thư viện mqtt.js và thêm nó vào thư mục dự án của mini program.

  • Đảm bảo rằng ID client duy nhất, ví dụ: wxapp_<id_người_dùng_mini_program>_<thời_gian_thuộc_tính>;
  • Tạo tài khoản mới trong nền tảng EMQX;
  • Kiểm soát quyền hạn là cần thiết. Ví dụ, giới hạn tài khoản mini program chỉ có thể đăng ký các lich thi dau ngoai hang anh hom nay chủ đề cụ thể.
 1connectMQTT: function() {
 2    const ts = new Date().getTime();
 3    const clientId = `wxapp_${this.data.some_id}_${ts}`;
 4    try {
 5        let mqttClient = mqtt.connect(`${app.globalData.wssHost}`, {
 6            ...this.data.mqttOptions,
 7            clientId,
 8        });
 9        this.setData({
10            mqttClient,
11        });
12        this.data.mqttClient.on("connect", () => {
13            console.log("Kết nối đến máy chủ MQTT thành công");
14            this.data.mqttClient.on("message", (topic, payload) => {
15                console.log(`Nhận được tin nhắn - Chủ đề: ${topic}, Nội dung: ${payload}`);
16            });
17            this.data.mqttClient.subscribe("device/sensor/" + this.data.deviceName);
18        });
19    } catch (e) {
20        console.log("Không thể kết nối đến máy chủ MQTT.");
21    }
22},

Từ phiên bản 1.7.0 trở lên, tối đa có thể tồn tại cùng lúc 5 kết nối WebSocket.

let mqttClient = mqtt.connect(`wss://www.sunzhongwei.com/mqtt`, {
    ...this.data.mqttOptions,
    clientId,
});

Chỉ cần thay đổi wss thành wxs là xong. Một lỗi khá phiền phức!

Lưu ý rằng nếu quy trình kinh doanh đã hoàn tất, ví dụ như khi chuyển sang trang khác, bạn cần chủ động ngắt kết nối MQTT trong hàm onHide. Nếu không làm vậy, các thông báo đăng ký vẫn sẽ tiếp tục nhận được ở các trang khác.

  • Hàm wx.redirectTo kích hoạt sự kiện onUnload của trang hiện tại.
  • Hàm wx.navigateTo kích hoạt sự kiện onHide của trang hiện tại.
  • Hàm wx.reLaunch kích hoạt sự kiện onHide của tất cả các trang ngoại trừ trang sắp chuyển tới.

Cách hiển thị nút theo dõi tài khoản công khai trong WeChat i9bet Mini Program.