comparison mod_pubsub_mqtt/README.markdown @ 5833:58df53eefa28

mod_pubsub_mqtt: Update to MQTT 3.1.1
author Matthew Wild <mwild1@gmail.com>
date Wed, 07 Feb 2024 11:57:30 +0000
parents 2333e384409d
children
comparison
equal deleted inserted replaced
5832:5afc8273c5ef 5833:58df53eefa28
9 9
10 [MQTT](http://mqtt.org/) is a lightweight binary pubsub protocol suited 10 [MQTT](http://mqtt.org/) is a lightweight binary pubsub protocol suited
11 to embedded devices. This module provides a way for MQTT clients to 11 to embedded devices. This module provides a way for MQTT clients to
12 connect to Prosody and publish or subscribe to local pubsub nodes. 12 connect to Prosody and publish or subscribe to local pubsub nodes.
13 13
14 The module currently implements MQTT version 3.1.1.
15
14 Details 16 Details
15 ------- 17 -------
16 18
17 MQTT has the concept of 'topics' (similar to XMPP's pubsub 'nodes'). 19 MQTT has the concept of 'topics' (similar to XMPP's pubsub 'nodes').
18 mod\_pubsub\_mqtt maps pubsub nodes to MQTT topics of the form 20 mod\_pubsub\_mqtt maps pubsub nodes to MQTT topics of the form
19 `HOST/NODE`, e.g.`pubsub.example.org/mynode`. 21 `<HOST>/<TYPE>/<NODE>`, e.g.`pubsub.example.org/json/mynode`.
22
23 The 'TYPE' parameter in the topic allows the client to choose the payload
24 format it will send/receive. For the supported values of 'TYPE' see the
25 'Payloads' section below.
20 26
21 ### Limitations 27 ### Limitations
22 28
23 The current implementation is quite basic, and in particular: 29 The current implementation is quite basic, and in particular:
24 30
25 - Authentication is not supported 31 - Authentication is not supported
26 - SSL/TLS is not supported
27 - Only QoS level 0 is supported 32 - Only QoS level 0 is supported
28 33
29 ### Payloads 34 ### Payloads
30 35
31 XMPP payloads are always XML, but MQTT does not define a payload format. 36 XMPP payloads are always XML, but MQTT does not define a payload format.
32 Therefore mod\_pubsub\_mqtt will attempt to convert data of certain 37 Therefore mod\_pubsub\_mqtt has some built-in data format translators.
33 recognised payload types. Currently supported:
34 38
35 - JSON (see [XEP-0335](http://xmpp.org/extensions/xep-0335.html) for 39 Currently supported data types:
36 the format) 40
37 - Plain UTF-8 text (wrapped inside 41 - `json`: See [XEP-0335](http://xmpp.org/extensions/xep-0335.html) for
42 the format.
43 - `utf8`: Plain UTF-8 text (wrapped inside
38 `<data xmlns="https://prosody.im/protocol/mqtt"/>`) 44 `<data xmlns="https://prosody.im/protocol/mqtt"/>`)
39 45 - `atom_title`: Returns the title of an Atom entry as UTF-8 data
40 All other XMPP payload types are sent to the client directly as XML.
41 Data published by MQTT clients is currently never translated, and always
42 treated as UTF-8 text.
43 46
44 Configuration 47 Configuration
45 ------------- 48 -------------
46 49
47 There is no special configuration for this module. Simply load it on 50 There is no special configuration for this module. Simply load it on
49 52
50 Component "pubsub.example.org" "pubsub" 53 Component "pubsub.example.org" "pubsub"
51 modules_enabled = { "pubsub_mqtt" } 54 modules_enabled = { "pubsub_mqtt" }
52 55
53 You may also configure which port(s) mod\_pubsub\_mqtt listens on using 56 You may also configure which port(s) mod\_pubsub\_mqtt listens on using
54 Prosody's standard config directives, such as `mqtt_ports`. Network 57 Prosody's standard config directives, such as `mqtt_ports` and
55 settings **must** be specified in the global section of the config file, 58 `mqtt_tls_ports`. Network settings **must** be specified in the global section
56 not under any particular pubsub component. The default port is 1883 59 of the config file, not under any particular pubsub component. The default
57 (MQTT's standard port number). 60 port is 1883 (MQTT's standard port number) and 8883 for TLS connections.
58 61
59 Compatibility 62 Compatibility
60 ------------- 63 -------------
61 64
62 ------- -------------- 65 ------- --------------
63 trunk Works 66 trunk Works
64 0.9 Works 67 0.12 Works
65 0.8 Doesn't work
66 ------- -------------- 68 ------- --------------