MQTT: Thuê bao có thể gửi dữ liệu cho nhà sản xuất không đồng bộ không?


7

Thiết bị IoT kịch bản (thiết bị hiện tại là IPv4) gửi qua ổ cắm TCP một tải trọng đến máy chủ một lần mỗi ngày. Máy chủ có địa chỉ IP công cộng, thiết bị nằm phía sau bộ định tuyến / NAT. Tôi sẽ sử dụng một mô-đun dựa trên ESP8266 (tức là Olimex)

Mục tiêu Máy chủ sẽ có thể gửi dữ liệu tới bất kỳ khách hàng nào bất cứ khi nào cần. Tôi không quan tâm đến giao tiếp trực tiếp giữa khách hàng với khách hàng (nghĩa là kết nối với thiết bị từ điện thoại thông minh của tôi) như việc bấm lỗ được cho là phải làm.

Các yêu cầu khác Các thiết bị IoT có thể tăng lên đến vài nghìn. Kết nối Internet của họ được cung cấp bởi bộ định tuyến / modem hỗ trợ 4G.

Giải pháp đề xuất Theo tôi hiểu một giải pháp phổ biến là MQTT. Các máy khách định kỳ gửi dữ liệu cho nhà môi giới (tức là Mosquitto đang chạy trên máy chủ lưu trữ), đến lượt nó cập nhật ứng dụng web chính chạy trên cùng một máy chủ.

Câu hỏi Ứng dụng web có thể gửi dữ liệu cho bất kỳ khách hàng nào bất cứ khi nào nó cần thông qua nhà môi giới không? Nói cách khác: một thuê bao có thể gửi lại dữ liệu cho một nhà xuất bản cụ thể không đồng bộ (tức là không phải chờ truyền tiếp theo) không?

Câu trả lời:


8

Bất kỳ ứng dụng khách MQTT nào cũng có thể đăng ký và xuất bản, không có sự phân biệt giữa chúng (chỉ có các quy tắc ACL có thể kiểm soát người dùng nào có thể làm gì).

Ngoài ra, không có khái niệm về một khách hàng nhất định gửi dữ liệu đến một khách hàng khác. Tin nhắn được xuất bản cho các chủ đề, không phải khách hàng khác. Không có gì để ngăn chặn một khách hàng cụ thể đăng ký vào một chủ đề cụ thể mà các khách hàng khác sau đó có thể sử dụng để gửi tin nhắn đến khách hàng đó.

Cũng không cần phải đợi đăng ký đến trước khi xuất bản một tin nhắn về một chủ đề.

MQTT v5 thêm khái niệm nhắn tin kiểu yêu cầu / trả lời, nhưng cách thực hiện điều này là bằng cách bao gồm một trường chủ đề bổ sung trong tin nhắn. Chủ đề bổ sung này có thể được đọc bởi một thuê bao và được sử dụng để xuất bản một tin nhắn trả lời. Nhưng nó chỉ là một gợi ý không phải là một yêu cầu khó khăn.

Ứng dụng web có thể sử dụng MQTT qua Websockets để kết nối với nhà môi giới và hoạt động giống như bất kỳ ứng dụng khách MQTT nào khác.


Câu trả lời rõ ràng. Nếu tôi hiểu chính xác, theo quan điểm của nhà môi giới, cả thiết bị IoT và ứng dụng web đều là "khách hàng" có thể đóng vai trò là nhà xuất bản hoặc người đăng ký khi cần. Sau đó, tự mình xác định một chủ đề (ví dụ) cho phép ứng dụng chính yêu cầu thiết bị khởi động lại "ngay bây giờ" - "ngay bây giờ" là khi thiết bị thực sự trao đổi dữ liệu với nhà môi giới.
Đánh dấu

Đúng, điều đó bao gồm khá nhiều
hardillb
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.